2025.2.15

web [HNCTF 2022 Week1]Interesting_include:

直接打开 PHP代码片段包含两部分:一个主脚本和一个潜在的被包含文件。主脚本负责处理GET请求,特别是filter参数,而被包含文件(假设为./flag.php)似乎包含了我们想要获取的信息(可能是flag值)。然而,主脚本中存在安全机制,试图通过正则表达式阻止直接访问flag.php。

  • 思路:参数获取:脚本首先检查_GET\['filter'\]是否存在。如果存在,它将其值赋给变量file。
  • 正则表达式验证:接下来,脚本使用preg_match函数检查$file变量中是否包含字符串flag(不区分大小写)。如果不包含,脚本将终止并返回"error"。
  • 文件包含:如果$file包含flag,脚本将尝试使用include语句包含该文件。

直接构造payload(跟之前做过的一个题一样):

?filter=php://filter/read=convert.base64-encode/resource=flag.php 直接解码

MISC [HUBUCTF 2022 新生赛]最简单的misc:

  • 打开图片 文件分离后,没发现有用的 lsb,发现png文件 得到一个二维码 扫码直接得到flag

CRYPTO [NSSCTF 2022 Spring Recruit]Vigenere:

打开就是一推 虽有细节,但一看就是假的 直接简单粗暴一点放网站解密

Vigenere Solver | guballa.de

REVERSE [HGAME 2023 week1]test your IDA:

64位 额,打开直接就得到flag。感觉有点无语,这不是白浪费我金币吗?

PWN [HNCTF 2022 Week1]ezcmp:

先了解gdb:

一、GDB 概述

GDB(GNU Debugger)是 GNU 项目提供的一个强大的程序调试工具,它允许开发者在程序运行时检查和修改程序的状态。GDB 支持多种编程语言,特别是 C 和 C++,是 Linux 下最常用的调试工具之一。

二、GDB 的主要功能

  1. 启动程序:GDB 可以启动被调试的程序,并可以控制它的执行。
  2. 设置断点:开发者可以在程序的特定行或函数中设置断点,当程序运行到这些位置时会自动暂停。
  3. 单步执行:GDB 允许开发者逐行或逐函数地执行程序,以便仔细观察程序的行为。
  4. 查看变量:在程序暂停时,GDB 可以显示程序中所有变量的当前值。
  5. 修改变量:开发者还可以在程序暂停时修改变量的值,以观察不同的输入对程序的影响。
  6. 继续执行:在程序暂停后,GDB 可以继续执行程序,直到遇到下一个断点或程序结束。

三、GDB 的使用方式

  1. 启动 GDB:在命令行中输入 gdb 后跟要调试的程序名,即可启动 GDB。
  2. 设置断点:使用 break 命令(或简写为 b)设置断点,例如 break main 会在 main 函数处设置断点。
  3. 运行程序:使用 run 命令(或简写为 r)运行程序。程序会在遇到断点或异常时暂停。
  4. 查看变量:使用 print 命令(或简写为 p)查看变量的值,例如 print var_name 会显示变量 var_name 的当前值。
  5. 单步执行:使用 next 命令(或简写为 n)逐行执行程序,或使用 step 命令(或简写为 s)逐函数执行程序。
  6. 继续执行:使用 continue 命令(或简写为 c)继续执行程序,直到遇到下一个断点或程序结束。

四、GDB 的高级功能

除了上述基本功能外,GDB 还提供了许多高级功能,如:

  • 条件断点:允许开发者设置仅在满足特定条件时才触发的断点。
  • 观察点:当特定内存地址的内容发生变化时触发。
  • 回溯调试:当程序崩溃时,GDB 可以提供函数调用堆栈的回溯信息,帮助开发者定位问题。
  • 远程调试:GDB 支持通过网络远程调试运行在其他机器上的程序。

直接尝试失败 打开看见了c源码 分析得到主函数中,首先将一个固定的字符串复制到全局数组buff中,然后调用enccrypt函数对其进行加密。之后,程序从标准输入读取30个字符,并与加密后的buff进行比较。如果匹配,则执行/bin/sh,否则输出失败信息并退出。

注意:全局变量v0的声明是多余的,因为在main函数中它被重新声明并初始化了。

根据反编译后的代码可知只要满足buff=buf就可以getshell

首先我想到的是buff加密前的值是"Ayaka_nbbbbbbbbbbbbbbbbb_pluss",直接根据加密函数加密后得到密文就行了,仔细观察可以看到加密过程中使用了随机数种子,伪加密,随机数种子给了,那就可以直接得到密文:

b'r@\x0e\xdc\xaaxF\x14\xe2\xb0~L\x1a\xe8\xb6\x84R\xee\xbc\x8aX&\xf4\xc2\x90^,\xcb\xc8\x00\x00'

直接连接 拿下

相关推荐
xzal126 小时前
青少年编程都有哪些比赛可以参加
笔记·青少年编程
明月看潮生2 天前
青少年编程与数学 02-009 Django 5 Web 编程 17课题、中间件
python·青少年编程·中间件·django·编程与数学
明月看潮生3 天前
青少年编程与数学 02-009 Django 5 Web 编程 21课题、部署
python·青少年编程·django·部署·编程与数学
明月看潮生3 天前
青少年编程与数学 02-009 Django 5 Web 编程 22课题、性能优化
python·青少年编程·性能优化·django·编程与数学
明月看潮生4 天前
青少年编程与数学 02-009 Django 5 Web 编程 19课题、RESTful API开发
python·青少年编程·django·restful·编程与数学
遇印记5 天前
2025.2.16
青少年编程
明月看潮生5 天前
青少年编程与数学 02-009 Django 5 Web 编程 16课题、权限管理
python·青少年编程·django·编程与数学·授权与认证
明月看潮生5 天前
青少年编程与数学 02-009 Django 5 Web 编程 14课题、命名空间
python·青少年编程·django·编程与数学
yuyanjingtao6 天前
CCF-GESP 等级考试 2024年9月认证C++二级真题解析
c++·青少年编程·gesp·csp-j/s·编程等级考试