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: