【实验吧】逆向rev50

 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

于是设置参数:

然后看一下主函数:

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

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

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

 关于挂载参数是123456:

原文地址:https://www.cnblogs.com/liuyimin/p/7468780.html