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'

直接连接 拿下

相关推荐
earthzhang20212 天前
【1028】字符菱形
c语言·开发语言·数据结构·c++·算法·青少年编程
Minecraft红客4 天前
火柴人遗产战争五
c++·游戏·青少年编程·电脑·娱乐
yuyanjingtao5 天前
CCF-GESP 等级考试 2025年9月认证C++一级真题解析
c++·青少年编程·gesp·csp-j/s
jianqiang.xue7 天前
单片机图形化编程:课程目录介绍 总纲
c++·人工智能·python·单片机·物联网·青少年编程·arduino
老花眼猫9 天前
可自动求解的魔法游戏程序(C语言)
c语言·经验分享·青少年编程·课程设计
earthzhang20219 天前
【1008】计算(a+b)/c的值
c语言·数据结构·c++·算法·青少年编程
程序员莫小特10 天前
老题新解|计算2的N次方
开发语言·数据结构·算法·青少年编程·信息学奥赛一本通
lisw0511 天前
SolidWorks:现代工程设计与数字制造的核心平台
人工智能·机器学习·青少年编程·软件工程·制造
earthzhang202111 天前
【1007】计算(a+b)×c的值
c语言·开发语言·数据结构·算法·青少年编程
轩源源18 天前
双向链表,这也太简单了吧!(C语言实现)
c语言·数据结构·算法·链表·青少年编程