继续上一篇Reversing ELF的内容,完成crackme6到crackme8的练习
crackme6
要求分析二进制文件得到密码
查看安全保护
直接运行程序
在gdb中看到main函数调用了compare_pwd()函数
compare_pwd()中调用了my_secure_test(),可以看到在my_secure_test()逐位比较al
最终拼接得到313333375f707764,16进制转ascii后得到1337_pwn
crackme7
要求分析题目得到flag
检查安全保护
直接运行程序
使用IDA动态调试,发现要想得到正确结果的路径,即eax和31337比较
一步步向上逆着分析,发现这道题的逻辑是:进入菜单,判断输入,如果不是数字,输出Unknown input!
,如果是数字,则比较是不是1,不是1则到2,不是2则到3,在3中和31337比较,如果相等调用giveFLag()函数得到flag。
crackme8
要求分析文件得到flag
检查安全防护
运行程序
IDA中分析
如果eax和3405705229相等,则得到flag,直接在gdb中修改eax
启动gdb,在cmp前下断点
pwndbg> b *0x80484e1
Breakpoint 1 at 0x80484e1
任意输入一个密码,如密码1,运行到断点,步进
r 1
设置eax的值
pwndbg> set $eax=3405705229
步进,跳转,按
c`直到程序结束,得到flag