【实验吧】逆向rev50

时间:2021-01-31 11:00:56
 a simple reverse view


解题链接: http:
//ctf5.shiyanbar.com/reverse/rev50/rev50

看了别人写的wp得知是挂载参数执行。

补充:gdb挂载参数相关命令

可以在gdb启动时,通过选项指定被调试程序的参数,例如:

$ gdb
-args ./a.out a b c
也可以在gdb中,通过命令来设置,例如:

(gdb)
set args a b c
(gdb) show args
Argument list to give program being debugged when it
is started is "a b c".
也可以在运行程序时,直接指定:

(gdb) r a b
Starting program:
/home/xmj/tmp/a.out a b
(gdb) show args
Argument list to give program being debugged when it
is started is "a b".
(gdb) r
Starting program:
/home/xmj/tmp/a.out a b
可以看出,参数已经被保存了,下次运行时直接运行run命令,即可。
有意的是,如果我接下来,想让参数为空,该怎么办?是的,直接:

(gdb)
set args

 

于是设置参数:

【实验吧】逆向rev50

然后看一下主函数:

【实验吧】逆向rev50

在任意一个strcmp函数处下断点:

【实验吧】逆向rev50

然后运行即可,便到了flag处:

【实验吧】逆向rev50

在ida中分析:对于箭头所指部分按R转换为字符,于是反转得到'mercedes'即为flag,至于如何反转,我也不太清楚

【实验吧】逆向rev50

 关于挂载参数是123456:

【实验吧】逆向rev50