格式化字符串漏洞
非getshell
思路
- 按代码的逻辑来说,是要求猜一个随机数,如果这里的cat flag的确有这个flag的话,那么覆盖password成为指定内容就可以做完了。
password是一个bss段的变量,而checksec发现
地址随机化没开,所以password的地址确定了。
-
**payload**
buf是第十个参数,干脆把他覆盖成0。然后再加上前面格式化字符串的长度,可以得到地址开始是第17个参数。
1
payload="%17$hhn%18$hhn%19$hhn%20$hhnA"+p32(0x0804a048)+p32(0x0804a049)+p32(0x0804a050)+p32(0x0804a051)
exp
1 |
|
getshell
- 我大胆想象一下,如果我把atoi的got表给改成system的plt表……
1 |
|
plt表是不可写的= =。