[第五空间2019 决赛]PWN5
使用checksec查看:

开启了Canary和栈不可执行。
放进IDA中分析:

printf(&buf);:存在格式化字符串漏洞。if ( atoi(&nptr) == unk_804C044 ) { puts("ok!!"); system("/bin/sh"); }:用户第二次输入的字符串和unk_804C044中的相同就可以拿到权限。fd = open("/dev/urandom", 0); read(fd, &unk_804C044, 4u);:unk_804C044中的数据是随机的,存在bss段上。
题目思路
- 存在字符串格式化漏洞。
- 可以通过字符串格式化漏洞将
unk_804C044中的数据固定。 - 第二次输入固定的值就可以getshell。
步骤解析
首先要确定偏移位

"本文详细介绍了如何利用程序中的格式化字符串漏洞来固定unk_804C044中的数据,从而在第二次输入特定值时触发getshell。首先确定偏移位为10,然后构造payload,通过`b"M%10$n"`配合p64(0x804C044)实现。最终输入1即可获得权限。整个过程揭示了栈保护机制下的漏洞利用技巧。"
最低0.47元/天 解锁文章
619

被折叠的 条评论
为什么被折叠?



