预备知识
本题涉及到的知识点:
- 栈溢出
程序分析
使用checksec查看保护情况。
64位程序,没开任何保护。
1
2
3
4
5Arch: amd64-64-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: No PIE (0x400000)运行程序,发现提示我们关闭开关,并给我们了一个开关地址。
拖入IDA进行分析。发现main函数存在简单的栈溢出漏洞。
根据它的提示,我们进入easy函数。发现存在相同的漏洞。
继续根据提示,进入normal函数。也存在栈溢出漏洞。
继续根据提示,进入shell函数,发现执行了system(“/bin/sh”)。
利用思路
ret2text
简直是送分题,连续几个栈溢出。
我们只需要找到几个函数对应的地址:
- easy:0x00000000004006B0
- normal:0x0000000000400607
- shell:0x00000000004005F6
优化方法:不需要一步一步跳转,直接通过main函数的栈溢出漏洞跳转到shell即可。
exp
未优化版本
1 | from pwn import * |
优化版本
1 | from pwn import * |