CTF-攻防世界-Reverse-(simple-check-100)

目录

 

simple-check-100

分析文件

使用IDA静态分析

Windows下使用IDA进行动态调试

linux gdb 动态调试


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

apt-get install 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!!!

 

猜你喜欢

转载自blog.csdn.net/weixin_43252204/article/details/108456637