做到了sql_labs的第十七关,之前的做的关卡都是可以经过一些尝试通过的,但是这关尝试了很多东西还是没有报错注入
只有通过代码审计查看本关的注入原理了
首先是看懂这个input_check()函数
之后我们要看看到这个,也是本题的解题点
这里我们可以看到,首先进行上传数据的判断,但是$uname是通过上面的input_check函数进行了相关的过滤,所以在第一个文本框是没办法输入的,但是密码并没有进行相关的过滤。
所以本关的重点是在密码框这里。
可以看出在得到row变量的之后,如果不为空,代码将要使用我们的passwd替换password
所以我们本次使用的是报错注入
这里会有两个报错输入函数updatexml()和extractvaule()
这两个解释大家可以在这里看
https://blog.csdn.net/zpy1998zpy/article/details/80631036
第一个文本框使用的是真实的用户名
第二个代码段如图
爆破数据库名
1' and extractvalue(2,concat('^',(select database()),'^'))#
爆破表明
1' and extractvalue(1,concat('^',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'^'))#
之后还是按照前面几关的步骤进行爆破