SQL注入之HTTP头部注入

文章目录

  • cookie注入练习
    • 获取数据库名称
    • 获取版本号
  • base64注入练习
    • 获取数据库名称
    • 获取版本号
  • user-agent注入练习
    • 获取数据库名称
    • 获取版本号

cookie注入练习

向服务器传参三大基本方法:GPC
GET方法,参数在URL中
POST,参数在body中
COOKIE,参数http在请求头部中COOKIE

cookie注入的注入点在cookie数据中,以sqil-labs-20关为例,做cookie注入练习,在虚拟机中打开链接http://127.0.0.1/sqli-labs-master/Less-20/index.php,用户名和密码都输入dumb登录

打开火狐代理,打开bp,刷新页面后到bp的proxy中的http history中查看拦截的数据包,快捷键Ctrl+r发送给Repeater,在拦截的http请求包中查看cookie字段。

尝试在cookie字段的uname中输入单引号,点击send发送,判断uname的数据类型和闭合方式:

uname=Dumb'

结果如下,数据类型为字符型,闭合方式为单引号:

在这里插入图片描述

由于有报错回显,所以可使用报错注入在cookie字段进行SQL注入:

获取数据库名称

在cookie字段中输入下面语句:

Dumb' and updatexml(1,concat(0x7e,(select database()),0x7e),1) #

updatexml(1,concat(0x7e,(select database()),0x7e),1)意思是通过中间的路径查找concat逗号前的内容,替换成concat括号后面逗号的内容,这个过程中如果中间的xpath路径出错,就会出现错误信息回显,我们把路径替换成concat(0x7e,(select database()),0x7e)查找数据库名字并拼接的语句就能得到数据库名称。

#用来注释掉后面的语句,–+和#都可以用来注释SQL语句,但是在http头部注入中**–+一般用于get方法的注入。**

结果如下,成功获得数据库名称security:

在这里插入图片描述

获取版本号

在cookie字段中输入下面语句:

Dumb' and updatexml(1,concat(0x7e,(select version()),0x7e),1) #

结果如下,成功获得数据库版本号5.5.53:

在这里插入图片描述

base64注入练习

base64是一种编码方式,> < =这些特殊符号转换成base64编码更有利于网络传输。

**base64注入的步骤和cookie注入类似,只是多了一步语句的base64加密。**以sqil-labs-22关为例,做cookie注入练习,在虚拟机中打开链接http://127.0.0.1/sqli-labs-master/Less-22/index.php,用户名和密码都输入dumb登录。

打开火狐代理,打开bp,刷新页面后到bp的proxy中的http history中查看拦截的数据包,快捷键Ctrl+r发送给Repeater,在拦截的http请求包中查看cookie字段,发现用户名是一段密文,查看render,发现其中的%3D其实是=号的URL编码:

在这里插入图片描述

复制用户名,在bp中的Decoder中先进行URL解码,然后进行base64解码,得到用户名Dumb:

在这里插入图片描述

获取数据库名称

经过测试,发现在cookie字段输入Dumb’'的base64编码才会报错,Dumb’不会报错,将下面语句

Dumb" and updatexml(1,concat(0x7e,(select database()),0x7e),1) #

在bp的Decoder中加密成base64编码:

RHVtYiIgYW5kIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgZGF0YWJhc2UoKSksMHg3ZSksMSkgIw==

加密步骤:

在这里插入图片描述

将base64编码输入到cookie字段的uname,得到输出结果,数据库名称为security:

在这里插入图片描述

获取版本号

步骤同上,将语句

Dumb" and updatexml(1,concat(0x7e,(select version()),0x7e),1) #

加密

RHVtYiIgYW5kIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgdmVyc2lvbigpKSwweDdlKSwxKSAj

得到版本号为5.5.53:

在这里插入图片描述

user-agent注入练习

以sqil-labs-18关为例,做cookie注入练习,在虚拟机中打开链接http://127.0.0.1/sqli-labs-master/Less-18/index.php,用户名和密码都输入dumb登录。

打开火狐代理,打开bp,刷新页面后到bp的proxy中的http history中查看拦截的数据包,快捷键Ctrl+r发送给Repeater,在拦截的http请求包中查看user-agent字段,测试它的数据类型和闭合方式:

输入gsw’发现报错且返回不匹配:

在这里插入图片描述

输入gsw’ #注释后面的语句也报错:

在这里插入图片描述

使用两个单引号闭合配对的方式来注入,此时无报错,可行:

在这里插入图片描述

获取数据库名称

在user-agent字段进行报错注入:

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

结果如下,成功获取到数据库名称:

在这里插入图片描述

获取版本号

在user-agent字段进行报错注入:

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

结果如下,成功获取到版本号:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/81352.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssl卸载原理

SSL卸载&#xff0c;也称为SSL解密&#xff0c;是一种将SSL加密数据流卸成非加密的明文数据流的过程。SSL卸载通常在负载均衡器、代理服务器、WAF等设备中实现&#xff0c;可以提高传输效率和安全性。 SSL卸载的原理是将SSL数据流拦截下来&#xff0c;通过设备内置的证书进行解…

MyBatis进阶:告别SQL注入!MyBatis分页与特殊字符的正确使用方式

目录 引言 一、使用正确的方式实现分页 1.1.什么是分页 1.2.MyBatis中的分页实现方式 1.3.避免SQL注入的技巧 二、特殊字符的正确使用方式 2.1.什么是特殊字符 2.2.特殊字符在SQL查询中的作用 2.3.如何避免特殊字符引起的问题 2.3.1.使用CDATA区段 2.3.2.使用实体引…

BDA初级分析——可视化基础

一、可视化的作用 数据可视化——利用各种图形方式更加直观地呈现数据的过程 可视化的作用 1、更快地理解数据&#xff0c;找出数据的规律和异常 2、讲出数据背后的故事&#xff0c;辅助做出业务决策 3、给非专业人士提供数据探索的能力 数据分析问题如何通过可视化呈现&am…

使用css实现点击切换active效果

不使用js&#xff0c;纯css实现点击切换active样式 一个父盒子中嵌套小标签,横向排列 html <div class"box"><a href"#">选项1</a><a href"#">选项2</a><a href"#">选项3</a><a href&…

Bootstrap的类container与类container-fluid有什么区别?

阅读本文前建议先阅读下面两篇博文&#xff1a; 怎么样通过Bootstrap已经编译好(压缩好)的源码去查看符合阅读习惯的源码【通过Source Map(源映射)文件实现】 在CSS中&#xff0c;盒模型中的padding、border、margin是什么意思&#xff1f; 以下是Bootstrap的类 container 的盒…

vue离线缓存资源文件

本文章主要是解决大文件,实时请求资源浪费网络资源的问题 从而有效的将解决用户体验的问题 话不多说上才艺 ⬇️⬇️⬇️⬇️⬇️⬇️⬇️ 找到项目中的 index.html 文件,并在 html 标签中加入 manifest"manifest.appcache" 安装 appcache-manifest 包 npm ins…

Maven 一键部署到 SSH 服务器

简介 利用 Maven Mojo 功能一键部署 jar 包或 war 包到远程服务器上。 配置 在 maven 的setting.xml 配置服务器 SSH 账号密码。虽然可以在工程的 pom.xml 直接配置&#xff0c;但那样不太安全。 <servers><server><id>iq</id><configuration&…

5、Spring_DI注解开发

DI 注解开发 1.目前面临问题 建立 mapper public interface EmployeeMapper {void save(); }建立 mapper 实现类 Repository public class EmployeeMapperImpl implements EmployeeMapper {public void save(){System.out.println("保存员工信息");} }建立 service …

人机对抗智能-部分可观测异步智能体协同(POAC)

环境链接&#xff1a;数据中心-人机对抗智能 (ia.ac.cn)http://turingai.ia.ac.cn/data_center/show/10 1.环境配置 Ubuntu 20.04 Anaconda python版本3.6 1.1 安装torch0.4.1失败 参考文章&#xff1a; 安装torch0.4.1的神坑_torch0.4.1_DEMO_Tian的博客-CSDN博客 co…

CTFshow——web入门——反序列化web254-web278 详细Writeup

前言 在做题之前先简要总结一下知识点 private变量会被序列化为&#xff1a;\x00类名\x00变量名 protected变量会被序列化为: \x00\*\x00变量名 public变量会被序列化为&#xff1a;变量名__sleep() &#xff1a;//在对象被序列化之前运行__wakeup() //将在反序列化之后立即…

日志搞不定?手把手教你如何使用Log4j2

系列文章目录 从零开始&#xff0c;手把手教你搭建Spring Boot后台工程并说明 Spring框架与SpringBoot的关联与区别 SpringBean生成流程详解 —— 由浅入深(附超精细流程图) Spring监听器用法与原理详解 Spring事务畅谈 —— 由浅入深彻底弄懂 Transactional注解 面试热点详解…

Java实现一个简单的图书管理系统(内有源码)

简介 哈喽哈喽大家好啊&#xff0c;之前作者也是讲了Java不少的知识点了&#xff0c;为了巩固之前的知识点再为了让我们深入Java面向对象这一基本特性&#xff0c;就让我们完成一个图书管理系统的小项目吧。 项目简介&#xff1a;通过管理员和普通用户的两种操作界面&#xff0…