【超详细】POST注入(Less-11)、Cookie注入(Less-20)、二次注入(Less-24)、宽字节注入(Less-32)

本博文仅用于信息安全防御教学,请遵守中华人民共和国网络安全法!!

POST注入

需要知道的一些知识:
所谓POST注入指的是我们往常传递参数的时候,在地址栏都可以看到
我们输入参数的具体值,但POST方式提交的特点就是,所提交的数据
不会在地址栏上显示。

这就需要我们对传递过来的数据进行抓包,通过拦截从而来修改我们
提交的数据,起到POST注入的效果。

0x01
首先我们根据题意,输入一个用户名和密码,系统显示你的用户名和你的密码(蓝字,可能看不请), 并且提示你成功登录
在这里插入图片描述
0x02
然后我们看到它的SQL语句后面的where条件存在单引号,然后我们联想到单引号注入,所以我们试试对username进行单引号注入,并且注释掉后面的语句,我们在登陆界面输入以下代码,我们发现红框里面出现了不属于我们登录的用户,而且还显示出了它的密码

www' or 1=1 -- (最后面有一个空格)

在这里插入图片描述
0x03
其实到这里我们就算是注入完成了,其实POST注入和GET注入就是,地址栏没有我们所提交的参数,这就需要我们抓包来查看它的参数,比如说:我提交username为admin,passwd为admin,我们来抓包看一下它携带的参数。所以我们也可以在burp中进行修改参数,和在输入username的登录界面的道理是一样的。
在这里插入图片描述
0x04
我们也可以通过burp修改参数,使其联合查询数据库的名称,我们看到红框中的Your Password中出现了数据库的名称security

asd' union select 1,database() --

在这里插入图片描述

Cookie注入

所谓Cookie就是一种储存在用户本地终端上的数据,通俗一点说就是,假如你登录了淘宝,那么当你关掉网页以后,再次打开淘宝,你会发现网页并没有让你登录,这就是因为它识别它给你的Cookie,认证了你的身份,所以你就不用再次输入用户名和密码。

所以本关,其实就是让你通过抓包来修改它的Cookie从而达到注入的目地

0x01
首先我们根据题意注册一个用户名叫admin密码为admin
在这里插入图片描述
然后放包看看它的登录界面
在这里插入图片描述
然后我们抓包刷新页面看看,这个页面所携带的Cookie是什么
在这里插入图片描述
我们发现它所携带的Cookie为admin

0x02

我们想到,可以从cookie下手来进行注入,因为不像POST注入那一关,这关在用户名直接进行注入是不行的,因为系统其实是识别的你的Cookie,来进行登录的,所以我们通过burp来修改它的Cookie从而达到注入的目的。

我们修改它的Cookie为下列语句

admin' order by 3 #
在这里插入图片描述
我们看到页面成功登录了,说明我们注入成功,并且它有3个字段

0x03
我们试一下order by 4来看看页面返回什么
在这里插入图片描述
我们发现它报错了说明我们之前的操作都是正确的

0x04
接下来就是我们的常规爆破操作了:

查看其回显位置 -> 爆数据库名 -> 爆数据表名 -> 爆字段名 -> 爆值(列)

aaa' union select 1,2,3 #
在这里插入图片描述
aaa' union select 1,2,database() #
在这里插入图片描述
aaa' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='security') #
在这里插入图片描述
aaa' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users') #
在这里插入图片描述
aaa' union select (select group_concat(id) from users),(select group_concat(password) from users),3 #
在这里插入图片描述

二次注入

本关为二次排序注入的示范例。二次排序注入也成为存储型的注入,就是将可能导致sql注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以出发sql注入。

  1. 黑客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令。

  2. 服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应。

  3. 黑客向服务端发送第二个与第一次不相同的请求数据信息。

  4. 服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的SQL语句或者命令在服务端环境中执行。

  5. 服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注入漏洞利用是否成功。

参考自:https://www.cnblogs.com/lcamry/p/5763008.html

0x01
首先我们根据题意创建一个用户名为root密码也为root的用户(我们把他视为超级用户)
在这里插入图片描述

0x02
我们看到它提示可以修改密码,而且是在登录的状态下,所以我们想到可以二次注入
在这里插入图片描述
0x03
我们可以构造一个特殊的用户名,使得我们用此用户的改密码机制,实现更改超级用户(root)密码的目的
我们创建一个root' #用户
在这里插入图片描述
0x04
我们现在对 root' #用户改密码其实是对root用户该密码
因为更改密码的sql语句其实就是
select * from users where id=$id and passwd=$passwd
所以我们构造的用户就可以改超级用户的密码
所以我们将root的密码改为123,我们重新登录root用新密码看看
在这里插入图片描述
可以看到我们的root用户成功登录了进去,至此二次注入结束
在这里插入图片描述

宽字节注入

所谓宽字节注入我们得知道以下知识:
1.数据库是GBK编码格式
2.当数据库是GBK编码格式,我们利用的是mysql的一个特性,mysql在使用GBK编码的时候,会认为两个字节是一个汉字(前一个ascii码要大于128,才到汉字范围)

还有关于转义字符的知识:
反斜杠具有转义功能
1.一个反斜杠 可以转义后面任意的字符例如 \' \" 分别转义单引号与双引号
2.两个反斜杠 可以输出一个正常的反斜杠如\输出的是 \
3.三个反斜杠 可以输出一个正常的反斜杠(第三个) 如 \\输出的是 \
还可以后面加任意字符进行转义,输出一个反斜杠加任意字符
例如 \\\' \\\" 可以转义出 \' \"
这就是我们题里面见到的把单引号转义为了反斜杠加单引号
4.四个反斜杠 功能类似于三个反斜杠的功能,例如 \\\\输出为 \\ \\\\'输出为\\'
四个反斜杠的前两个就是2的功能,然后等价于再实现3的功能

0x00
我们根据题得知,此题将单引号与双引号进行了转义
//escape any backslash

$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);

//escape single quote with a backslash

$string = preg_replace('/\'/i', '\\\'', $string);   

//escape double quote with a backslash

 $string = preg_replace('/\"/', "\\\"", $string)

0x01
我们首先根据题意来输入一个参数
在这里插入图片描述
我们看到下面出现了你输入的参数以及转换为十六进制的输入,并且看到执行的sql语句是单引号,我们可以尝试单引号注入,但是由于这道题像上面那样把单引号进行了转义,所以我可以考虑宽字节注入

在这里插入图片描述
0x02
我们可以在参数里增加一个%df(ascii码大于128),因为根据mysql的规则
两个字符(GBK编码)会自动组合成一个汉字,所以我就达到将\过滤掉的作用

原始数据:1%df’
过滤后:1%df’
url编码:1%df%5c%27

然后根据规则%df%5c组合为一个汉字,那么就只剩下%27也就是单引号
最终结果:1Δ(一个汉字)’ 从而过滤掉了反斜杠,剩下的内容就和我们的单引号注入一致了

?id=1%df%27% --+
在这里插入图片描述

0x03
剩下的操作就是我们的常规操作了

查看其回显位置 -> 爆数据库名 -> 爆数据表名 -> 爆字段名 -> 爆值(列)

在这里插入图片描述
在这里插入图片描述
后面的操作我就不在赘述了,宽字节注入的要点其实就是将转义出来的反斜杠过滤掉,具体可以用一个ASCII码大于128的字符来进行拼凑,从而组成一个汉字。

如有其他问题请评论或者私聊博主

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值