【实验吧】逆向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: