[第五空间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。
步骤解析
首先要确定偏移位