文章目录

  • cookie注入练习
    • 获取数据库名称
    • 获取版本号
  • base64注入练习
    • 获取数据库名称
    • 获取版本号
  • user-agent注入练习
    • 获取数据库名称
    • 获取版本号

cookie注入练习

向服务器传参三大基本方法:GPC
GET方法,参数在URL中
POST,参数在body中
COOKIE,参数http在请求头部中COOKIE

cookie注入的注入点在cookie数据中,以sqil-labs-20关为例,做cookie注入练习,在虚拟机中打开链接http://127.0.0.1/sqli-labs-master/Less-20/index.php,用户名和密码都输入dumb登录

打开火狐代理,打开bp,刷新页面后到bp的proxy中的http history中查看拦截的数据包,快捷键Ctrl+r发送给Repeater,在拦截的http请求包中查看cookie字段。

尝试在cookie字段的uname中输入单引号,点击send发送,判断uname的数据类型和闭合方式:

uname=Dumb'

结果如下,数据类型为字符型,闭合方式为单引号:

由于有报错回显,所以可使用报错注入在cookie字段进行SQL注入:

获取数据库名称

在cookie字段中输入下面语句:

Dumb' and updatexml(1,concat(0x7e,(select database()),0x7e),1) #

updatexml(1,concat(0x7e,(select database()),0x7e),1)意思是通过中间的路径查找concat逗号前的内容,替换成concat括号后面逗号的内容,这个过程中如果中间的xpath路径出错,就会出现错误信息回显,我们把路径替换成concat(0x7e,(select database()),0x7e)查找数据库名字并拼接的语句就能得到数据库名称。

#用来注释掉后面的语句,–+和#都可以用来注释SQL语句,但是在http头部注入中**–+一般用于get方法的注入。**

结果如下,成功获得数据库名称security:

获取版本号

在cookie字段中输入下面语句:

Dumb' and updatexml(1,concat(0x7e,(select version()),0x7e),1) #

结果如下,成功获得数据库版本号5.5.53:

base64注入练习

base64是一种编码方式,> < =这些特殊符号转换成base64编码更有利于网络传输。

**base64注入的步骤和cookie注入类似,只是多了一步语句的base64加密。**以sqil-labs-22关为例,做cookie注入练习,在虚拟机中打开链接http://127.0.0.1/sqli-labs-master/Less-22/index.php,用户名和密码都输入dumb登录。

打开火狐代理,打开bp,刷新页面后到bp的proxy中的http history中查看拦截的数据包,快捷键Ctrl+r发送给Repeater,在拦截的http请求包中查看cookie字段,发现用户名是一段密文,查看render,发现其中的%3D其实是=号的URL编码:

复制用户名,在bp中的Decoder中先进行URL解码,然后进行base64解码,得到用户名Dumb:

获取数据库名称

经过测试,发现在cookie字段输入Dumb’’的base64编码才会报错,Dumb’不会报错,将下面语句

Dumb" and updatexml(1,concat(0x7e,(select database()),0x7e),1) #

在bp的Decoder中加密成base64编码:

RHVtYiIgYW5kIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgZGF0YWJhc2UoKSksMHg3ZSksMSkgIw==

加密步骤:

将base64编码输入到cookie字段的uname,得到输出结果,数据库名称为security:

获取版本号

步骤同上,将语句

Dumb" and updatexml(1,concat(0x7e,(select version()),0x7e),1) #

加密

RHVtYiIgYW5kIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgdmVyc2lvbigpKSwweDdlKSwxKSAj

得到版本号为5.5.53:

user-agent注入练习

以sqil-labs-18关为例,做cookie注入练习,在虚拟机中打开链接http://127.0.0.1/sqli-labs-master/Less-18/index.php,用户名和密码都输入dumb登录。

打开火狐代理,打开bp,刷新页面后到bp的proxy中的http history中查看拦截的数据包,快捷键Ctrl+r发送给Repeater,在拦截的http请求包中查看user-agent字段,测试它的数据类型和闭合方式:

输入gsw’发现报错且返回不匹配:

输入gsw’ #注释后面的语句也报错:

使用两个单引号闭合配对的方式来注入,此时无报错,可行:

获取数据库名称

在user-agent字段进行报错注入:

gsw' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1

结果如下,成功获取到数据库名称:

获取版本号

在user-agent字段进行报错注入:

gsw' and updatexml(1,concat(0x7e,(select version()),0x7e),1) and '1'='1

结果如下,成功获取到版本号: