CTF-攻防世界-Reverse-(simple-check-100)
目录
simple-check-100
分析文件
下载附件解压之后发现有三个文件夹前面两个是elf文件(linux),还有一个exe文件(windows)
不太明白 为什么要给两个,先不管了 先来在windows下分析一下.exe文件
使用IDA静态分析
定位到主函数 main
大概流程是这样的将用户输入的key值,使用check_key()函数检查之后如果为真就执行下面的函数
猜测这个函数应该就是输出flag的
很显然 我们只需要在程序执行完check_key函数,返回时
也就是在这个位置 修改eax的值 使其校验为真 直接执行后面的函数
Windows下使用IDA进行动态调试
设置断点 两个
第一个 004015A4 (这个位置修改eax寄存器值)
第二个 004015B3 (让程序停下来)
继续执行
得到 乱码 没法解决
只能去linux上跑elf文件了
linux gdb 动态调试
安装gdb-peda
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
选择64位的文件
开始
gdb task9_x86_64_46d01fe312d35ecf69c4ff8ab8ace75d080891dc
设置断点在main函数入口处
b main
开始运行
r
到这里继续单步执行
n
接下来一直单步执行 到达输入key的地方 输入key值 继续
接下来继续单步执行 直到test eax,eax处
查看eax寄存器值
i r eax
修改eax寄存器值
set $eax=1
直接运行至程序结束
c
得到flag
flag:
flag_is_you_know_cracking!!!