【漏洞挖掘】——117、宽字节注入深入刨析

基本介绍

首先我们需要一起来了解一下什么是窄字节、宽字节、宽字节编码(英文默认占一个字节,汉字占两个字节):

  • 窄字节:字符的大小为一个字节时,称其字符为窄字节
  • 宽字节:字符的大小为两个字节时,称其字符为宽字节
  • 宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等等

宽字节注入主要是源于程序员设置数据库编码与PHP编码设置为不同的两个编码格式从而导致产生宽字节注入,例如:在使用PHP连接MySQL的时候,很多人都会增加一句

"set character_set_client = gbk"

MySQL在使用GBK编码的时候会认为两个字符为一个汉字,例如:%aa%5c是一个汉字(前一个ascii码大于128才能到汉字的范围),而程序员们在过滤'的时候往往利用的思路是将'转换为\' ,因此我们可以想办法将'前面添加的\除掉,一般有两种思路:

  • %df吃掉'\':具体的原因是urlencode('\)=%5c%27,我们在%5c%27前面添加%df,形成%df%5c%27,而上面提到的mysql在GBK编码方式的时候会将两个字节当做一个汉字,此时%df%5c就是一个汉字,%27则作为一个单独的符号在外面,同时也就达到了我们的目的
  • 将\'中的\过滤掉:可以构造%**%5c%5c%27的情况,后面的%5c会被前面的%5c给注释掉,这也是bypass的一种方法,'转换为utf-16为�'
注入流程

宽字节注入除了上面的构造外和其余注入没有什么特别大的区

### SQL注入漏洞挖掘实战教程 #### 一、理解SQL注入原理 SQL注入是一种通过在输入字段中插入恶意SQL语句,使应用程序将其作为合法查询的一部分发送给数据库并执行的技术。当程序员未能正确验证或转义用户输入时,这种攻击便可能发生[^2]。 #### 二、准备测试环境 为了安全地练习SQL注入技能,建议在一个受控环境中操作。可以使用像DVWA (Damn Vulnerable Web Application) 或者SQLi Labs这样的平台来进行实验。这些工具提供了多个不同级别的挑战供学习者尝试不同的注入手法[^4]。 #### 三、识别潜在目标 寻找可能存在SQL注入的地方通常集中在以下几个方面: - 登录表单中的用户名/密码框; - URL参数(GET请求),特别是那些看起来像是ID或其他数值型数据的部分; - 表单提交的数据项(POST请求); 对于每一个可能的目标点,都需要仔细分其背后的工作机制以及如何处理传入的信息。 #### 四、探测是否存在SQL注入可能性 一旦锁定了怀疑的对象之后,可以通过简单的试探性命令来判断是否有注入的机会。例如,在URL后面加上`' OR '1'='1`看看页面返回的结果是否会改变。如果确实存在漏洞,则说明该处未经过充分过滤就可以接受外部输入的特殊字符。 ```sql http://example.com/page.php?id=1' OR '1'='1 ``` #### 五、利用时间延迟函数进行盲注 有时候直接查看网页源码并不能立即得知成功的注入情况,这时就需要借助于一些特定的方法如基于布尔逻辑的时间延迋试验法。比如下面的例子展示了如何用MySQL内置的SLEEP()函数让服务器等待几秒钟再响应: ```sql http://example.com/page.php?id=1 AND IF((SELECT ASCII(SUBSTRING(@@version,1,1)))>57,SLEEP(5),0)--+ ``` 这段代码的意思是说:“如果你当前使用的MySQL版本号的第一个字节大于ASCII值57的话,请暂停5秒后再继续。” 如果页面加载速度明显变慢了,那就意味着条件成立,从而证明我们可以进一步探索这个漏洞。 #### 六、提取敏感信息 成功突破防御后,下一步就是要尽可能多地获取有价值的情报。这包括但不限于读取配置文件、枚举所有可用数据库及其结构等。这里以列举出所有的库为例: ```sql http://example.com/page.php?id=-1 UNION SELECT NULL,database(),NULL FROM information_schema.tables WHERE table_schema NOT IN ('mysql','information_schema') LIMIT 1 OFFSET 0--+ ``` 上述查询将会显示除系统自带之外的第一条记录所对应的数据库名称。通过调整LIMIT子句里的偏移量(offset),还可以依次访问其他更多项目。 #### 七、自动化工具辅助检测与利用 虽然手动方式有助于深入理解和掌握整个流程,但在实际工作中往往更加依赖高效便捷的自动化解决方案。其中最著名的莫过于开源项目——SQLMap。它不仅支持多种类型的数据库管理系统(DBMS),而且具备强大的功能集,可以帮助快速定位问题所在,并提供相应的修复建议[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值