查看文件权限
设置了canary,无法栈溢出。
F5查看源程序
源程序大意是把随机数放入到bss段的0x804c044处,用户输入用户名和密码,如果密码和随机数相等,则拿到权限。
解题思路
看到了printf,又加了canary权限,可以想到考查格式化字符串漏洞。可以更改0x804c044处的值,所以要精心构造一个合适的格式化字符串。构造的方法很多。
在用户输入用户名处,先输入一个AAAA,试探会写在栈的哪个位置。
“AAAA”写在了第10个位子。构造:
bss=0x804c044
payload=b"AAAA%16$n%17$n%18$n%19$n"+p32(bss)+p32(bss+1)+p32(bss+2)+p32(bss+3)
"AAAA%16$n%17$n%18$n%19$n"这一段一共是24个字节,当写入栈里时,会占满第10,11,12,