题目信息
Smashes, try your best to smash!!!
nc pwn.jarvisoj.com 9877
https://dn.jarvisoj.com/challengefiles/smashes.44838f6edd4408a53feb2e2bbfe5b229
开了NX和Canary:
静态分析
题目就是简单地接受输入,要求overwrite,但因为有canary不能直接溢出,那么就可以考虑argv[0] leak,通过溢出覆盖argv[0]的地址,然后根据smashes信息获取覆盖地址的内容
另外文件中有很像flag的字串,但服务器上肯定不是这串,既然flag就在程序中,那么泄露的内容就确定了,但是程序执行的过程中会把flag给修改了,这里有个小知识,当ELF文件比较小的时候,他的不同区段可能会被多次映射,也就是说flag可能有备份,gdb查找一下 :
在0x400d21有一处备份,那么我们就可以将argv[0]覆盖为0x400d21,来获取flag的值
exploit
1 | from pwn import * |