SQL注入之HTTP头部注入

文章目录

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

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

相关推荐
代码的余温36 分钟前
SQL性能优化全攻略
数据库·mysql·性能优化
手把手入门3 小时前
★CentOS:MySQL数据备份
数据库·mysql·adb
喂完待续3 小时前
【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
大数据·数据仓库·hive·hadoop·sql·apache
SelectDB3 小时前
5000+ 中大型企业首选的 Doris,在稳定性的提升上究竟花了多大的功夫?
大数据·数据库·apache
路多辛3 小时前
Golang database/sql 包深度解析(二):连接池实现原理
数据库·sql·golang
SimonKing4 小时前
Mybatis批量插入,形式不同性能也不同
数据库·后端·程序员
杰克尼5 小时前
MYSQL-175. 组合两个表
数据库·mysql
DemonAvenger5 小时前
MySQL索引原理深度解析与优化策略实战
数据库·mysql·性能优化
网络研究院5 小时前
新的“MadeYouReset”方法利用 HTTP/2 进行隐秘的 DoS 攻击
网络·网络协议·安全·http·攻击·漏洞
189228048615 小时前
NY270NY273美光固态闪存NY277NY287
服务器·网络·数据库·科技·性能优化