原文首发在:奇安信攻防社区
https://forum.butian.net/share/3692
sql注入
某条数据,点击详情的数据包,单引号报错
再加一个正常
本以为是一次平平无奇的sql注入,没想到绕了一天才绕过去,下面放几张测试失败的截图
首先就是404,不知道规则是啥样的,下面语句应该是没问题的就会404,1=1让语句不通就会500
试了下orcale的注入方法,又爆403,这里'||55||'会返回空数据,'||1/0||'会爆500,这里判断语句能想到的都试了,全403,最奇怪的是只有语句正确才会403,少写一个D就会500,不知道这什么匹配逻辑,不过试了一些插入空白字符啥的也都不行
这里我又跑了一遍字典,全404、500、403,期间尝试结合分块传输、参数污染、垃圾数据、白名单、高并发均未绕过去
最终经过我的不断测试,插入下面payload回显特别慢,最终显示数据量太大,不过in这个关键字我理解的不是很透彻,有懂的师傅可以解答下
代码语言:javascript复制'OR 1 in 1 and 'a' in 'a
当1 in 5 的时候整个结果为false,返回为空
直接注下user的长度
代码语言:javascript复制'OR 1 in length(user) and 'a' in 'a
只有相等时会卡死,很明显为7位
直接用instr函数注用户名
代码语言:javascript复制'OR 1 in instr(user,'u') and 'a' in 'a
instr函数代表后面那个字符在前面字符串第一次出现的位置
例如:
instr('user','u')返回1
instr('user','us')返回1
instr('user','s')返回2
第一位为S
第二位为H,其他同理
任意用户名密码重置
玩的某个游戏,手机号换了,申诉成功给我发了邮件,可以看到id和token
这里直接更换id访问,进行更改密码,显示错误
简单测了测,id随便改,token为空
直接修改密码成功
这里因为不知道目标账号的id,只能随机修改,因为手机号基本就跟id绑定,于是找到了申诉的功能点,这里输入手机号
可以看到返回了id
下一步就是要知道目标的手机号,经过我的不懈寻找,在游戏app的登录界面,有个忘记账号功能
这里输入手机号或者游戏的uid就可以看到一些信息
这里游戏uid是公开的,资料就能看到,不过手机号只有前三位和后四位
在官网找回密码处,这里输入手机号抓个包
输入不对的手机号会提示错误,因为我们知道前三位还有后四位,爆破起来还是很快的
最后只得到几个真实存在的手机号,这时候就可以去游戏app登陆界面去对比,手机号正确的话,返回的UID是一样的,这里也可以抓包写个脚本去判断,因为真实存在手机号就几个,我就直接手动尝试的
确定了目标手机号就知道了id,就可以想修改谁的密码就可以修改谁的了
某站测试记录
目标站主域名有两个,a和b代替 ,这里主要目标是a,b应该是以前用的,首先是爆破出来了两个demo站demo.atest.com和demo.btest.com 会提示ip无法访问,访问demo.btest.com
另外一个也一样
这里直接插xff头绕过的
代码语言:javascript复制X-Forwarded-For: 127.0.0.1
X-Forwarded:127.0.0.1
Forwarded-For:127.0.0.1
Forwarded:127.0.0.1
X-Requested-With:127.0.0.1
X-Forwarded-Proto:127.0.0.1
X-Forwarded-Host:127.0.0.1
X-remote-lP:127.0.0.1
X-remote-addr:127.0.0.1
True-Client-lP: 127.0.0.1
X-Client-lP:127.0.0.1
Client-lP: 127.0.0.1
X-Real-IP:127.0.0.1
Ali-CDN-Real-IP:127.0.0.1
Cdn-Src-lp:127.0.0.1
Cdn-Real-lp:127.0.0.1
CF-Connecting-lP:127.0.0.1
X-Cluster-Client-lP:127.0.0.1
WL-Proxy-Client-lP:127.0.0.1
Proxy-Client-lP:127.0.0.1
Fastly-Client-lp: 127.0.0.1
True-Client-lp: 127.0.0.1
X-Originating-lP:127.0.0.1
X-Host: 127.0.0.1
X-Custom-lP-Authorization:127.0.0.1
这里是创建订单成功了,返回了一个地址,https://cashier.xxxx.xxxx
访问之后
因为这是订单信息,所以我猜测前面子域名是后台的
构造https://cashier.atest.com 访问之后401,添加xff头直接访问
这里a网站应该也是一样的规则
因为是测试后台,这里直接将test删除,访问https://cashier.a.com 显示无法访问,修改xff头仍然失败
只能从测试站入手了,首先是爆破出来了用户密码,但是却无法登录,不过返回了token,这里前端看到了webpack的接口信息
在JS存在好多接口和接口配置包的构造并且还有API路径
抓个登录接口的包看下格式拼接就好
有的接口有未授权,有的接口需要权限,但是爆破成功的数据包里面是有返回token的,于是带着这个token访问就可以了,但是均为测试站点的数据
于是猜测管理后台地址也是有这些接口的,直接更换请求的host,成功获取到真实数据