【CTF】RE Backdoor CTF 2015 TEAM 600

来源: Backdoor CTF 2015

There is a wierd kind of authentication service running: nc hack.bckdr.in 8004. The binary can be found here. The vampire says that there is no need for bruteforce.

 

解题思路:

看一下文件格式

不管那么多,先扔到IDA里面看看

随便选择一个函数,按X(虽然好笨的方法但是很实用?注意光标位置)

重复这个过程,直至不能找到引用函数

找到主函数后按F5看看源码

这里调用了一个函数,跟进去可以看出这里在进行flag校验

注意箭头,这里直接将我们输入的字符串输出,这里看来存在printf format 漏洞

好了,直接上gdb,先看看主函数入口

Linux下进行调试,最常用的就是GDB了,虽然个人用惯了Od感觉用起来操作还是有点繁琐,但是大神都是这么说的我也就跟着了233

为了方便贴上常用快捷键。

GDB常用命令

格式

含义

简写

list

List [开始,结束]

列出文件的代码清单

l

prit

Print 变量名

打印变量内容

p

break

Break [行号或函数名]

设置断点

b

continue

Continue [开始,结束]

继续运行

c

info

Info 变量名

列出信息

i

next

Next

下一行

n

step

Step

进入函数(步入)

S

display

Display 变量名

显示参数

  

file

File 文件名(可以是绝对路径和相对路径)

加载文件

  

run

Run args

运行程序

r

 

接下来上gdb

单步跟踪到printf(a1)函数处,然后查看一下栈的情况,我们可以再0xbffff048处看到自己存储在flag.txt中的flag

这里我们可以判断出flag在栈中的位置(esp+4*M+flag),通过测试,我们可以知道M=9,因此我们可以构造如下format字符串

然后就可以连接了,可以看到我们已经取得了flag的16进制形式

可以放到notepad++(插件->Converter->hex to Ascll )里面转一下,或者自己用python写个脚本?(好吧是我嫌弃notepad++太丑了233)

得到flag

 

@Reference bluecake(中国好室友)

你可能感兴趣的:(OO)