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

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

相关推荐
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
云技纵横2 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
霜落长河3 天前
抛弃TCP改用UDP,HTTP3怎么了?
http
ClouGence3 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神3 天前
三、用户与权限管理
数据库·mysql
麦聪聊数据4 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡4 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
之歆4 天前
现代 HTTP 客户端深度解析:Fetch 与 Axios
chrome·网络协议·http