小迪-day14(注入类型之提交注入)

news2024/11/26 21:29:26

1、参数提交注入

img

1.1 明确参数类型

数字,字符,搜索,JSON等

1.2 明确提交方式

GET, POST,COOKIE,REQUEST,HTTP头等

可能有些网站是以Request的方式接受参数,所以GET和POST都行

注入的地方可能在User-Agent、cookie上,关键是看是否带入数据库查询。

1.3 如何去闭合sql

sql语句干扰符号: ’ ," , ) , } % 等,具体需看写法

'  "  将sql字符串包裹,可以相应使用' "  去闭合原sql语句,使插入的sql语句生效
% 出现在like  模糊查询
(  )	可能出现在insert等语句中

1.4 注入中注释的使用

–+ 在get请求方式放在url中可以使用,相当于sql中的注释,–+相当于 – (–空格),可以使后面的sql语句被注释

# 也可当作注释使用,post中不用 (–+),用#注释后面的sql语句

2、参数字符型注入测试

sqlilabs -- less5、6

2.1 less5

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

SQL执行的语句是采用了 ’ 单引号闭合,

我们要是直接使用?id=1 and 1=1相当于执行的是SELECT * FROM users WHERE id='1 and 1=1' LIMIT 0,1;是不会有任何的反应。

正确写法:

?id=1' and '1'='1
?id=1' and '1'='2

或者:

?id=1' and 1=1 --+
?id=1' and 1=2 --+
--+ 将后面的sql语句进行注释
image-20221111090609506 image-20221111090627247

使用 order by 3 查询出字段数为3

2.2 less 6

源码:

$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
image-20221111090758354

换成了双引号闭合

3、POST数据提交注入测试

sqlilabs less11

3.1 less11

源码:

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

为了实验方便,回显sql语句:

image-20221111091623571

如图:

image-20221111091736725

在bp中抓包

image-20221111092213722

测试:

image-20221111092423253

发现可以注入

查询字段:

image-20221125093658144

image-20221111092720877

image-20221111092644052image-20221111092720877

发现字段数只有俩列

查询回显字段:

image-20221111093042771

发现第一个字段显示用户名,第二个显示密码

要回显出字段,首先应该令前一个查询条件为假,这样union之后才会显示第二天select语句结果。
或者使用limit 1,1 显示出第二条数据,如下图:
image-20221111093304480

回显出数据库名,和mysql版本号:

image-20221111093339377

查询出用户,操作系统

image-20221111093423979

然后就可以使用

information_schema.tables  		查询表名称
information_schema.columns		查询表中字段
information_schema.schemata		查询数据库名称

查询所有数据库(group_concat()):

image-20221111093911511

查询security下的表:

image-20221111094119732

查询users下面的字段:

image-20221111094247447

查询username、password字段的数据:

image-20221111094610329

4、JSON注入

	JSON注入是指应用程序所解析的JSON数据来源于不可信赖的数据源,程序没有对这些不可信赖的数据进行验证、过滤,如果应用程序使用未经验证的输入构造 JSON,则可以更改 JSON 数据的语义。在相对理想的情况下,攻击者可能会插入无关的元素,导致应用程序在解析 JSON数据时抛出异常。
	
	在JSON中是根据引号(“)、冒号(:)、逗号(,)、花括号({})来区分各字符的意义的。如果向JSON中注入恶意字符,那么JSON将解析失败。
	
JSON注入和XML注入、SQL注入一样,都需要对影响语句的内容进行转义,如双引号、花括号等。

和SQL注入一样(只是传入的形式变了),插入注入语句。但要注意一点是对影响json语句的要进行转义,如双引号、花括号等。

image.png

注入方式:如果是数字的可以不加 ’ 闭合, 如果是字符的话,加上引号闭合

JSON格式: 使用双引号 " " 键值对形式

{
	"username": "admin",
	"password": "admin"
}

当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。

值的数组 形式:

{ "programmers": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": 			      "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
 ],
"authors": [
  { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
  { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
  { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
 ],
"musicians": [
  { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
  { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
 ]
}

5、COOKIE数据提交注入测试

sqlilabs less 20

网站传递参数的方式:

参数类型含义
get型一般访问网页的行为
cookie型 (不是请求方式)伴随着所有访问网页的行为
post型上传文件,登陆

**cookie注入原理:**对get传递来的参数进行了过滤,但是忽略了cookie也可以传递参数。

【cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。】

条件含义
条件1程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤
条件2条件1的基础上还需要程序对提交数据获取方式是直接request(“xxx”)的方式,未指明使用request对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是是在URL后面的参数也可以是cookie里面的参数这里没有做筛选,之后的原理就像我们的sql注入一样了

通过分析源码可知,当我们使用正确的用户名密码登录成功后,就会产生一个cookie值(记录了username值),再次登录后就会携带这个cookie值,通过cookie查询用户名,但是源码对cookie存在 sql 注入

源码cookie查询语句:

$sql="SELECT * FROM users WHERE username='$cookee' LIMIT 0,1";
image-20221111103503806

使用正确用户名、密码登录

image-20221111103526706

成功登录后,抓取到一个数据包携带cookie

查询到字段数为3

image-20221111103906699
修改cookie参数
Cookie: uname=admin' and 1=2 union select database(),user(),version() #

image-20221111104029499

6、HTTP头部参数数据注入测试

sqlilabs less 18

分析源码,可以看到,源码对

$uagent = $_SERVER['HTTP_USER_AGENT'];
$IP = $_SERVER['REMOTE_ADDR'];
...
$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";

UA,和ip没有进行限制,可以进行注入。

也就是说我们通过修改http的头部信息可以达到SQL注入的效果。

登录之后,修改UA数值为:fuck 可得

image-20221111105655834

image-20221111105719610

那我们将 user-agent 修改为注入语句呢?
将 user-agent 修改为

'and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1
image-20221111105850994

可以看到我们已经得到了版本号。

t/2022/11/25/2VHSaUesGZpfw4N.png" alt=“image-20221111105655834” style=“zoom: 50%;” />

[外链图片转存中…(img-BtTeYP1V-1670312629813)]

那我们将 user-agent 修改为注入语句呢?
将 user-agent 修改为

'and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1
image-20221111105850994

可以看到我们已经得到了版本号。

image-20221111105937233

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

辽宁熤星传媒文化:抖音原创特效怎么做?

现在很多小伙伴在家都基本上会去找一些副业来做,或者是一些赚钱的方法,要知道,抖音其实还是有很多赚钱的机遇在里面的,那么大家拍抖音都是需要去使用特效的,那么抖音特效应该怎么做呢?跟着辽宁熤星传媒小编…

探索可观测性:AIOps中的时序数据应用

01. 背景 随着科技的发展,时序数据在我们的认知中占据越来越多的位置,小到电子元件在每个时刻的状态,大到世界每天的新冠治愈人数,一切可观测,可度量,可统计的数据只要带上了时间这个重要的因素就会成为时…

Antlr4 快速入门 - 编写语法解析器

Antlr全称(ANother Tool for Language Recognition),Antlr4是一款强大的语法分析器生成工具,推特,Haddop,Oracle等各大知名公司在用到了Antlr来构建自己的语言处理类项目。 一门语言的正式描述称为语法(grammar),Antl…

计算机考研报名人数下降一半!211北京科技大学计算机报考人数公布!

北京科技大学是一所211大学,计算机学科评估B,计算机实力在211大学中还算不错。前段时间,北京科技大学公布了23考研的报考人数,而且详细到了各个专业的人数:北京科技大学2023年硕士研究生各招生专业准考人数统计表https…

PyQt5页面跳转问题及解决方式

问题1:如何实现页面间跳转 主要定义MainWindow类和Actions.py class MainWindow: Actions.py: 问题2:实现定义函数传参功能 大胆修改,将定义函数的参数值改为a;使用函数处将参数加上: 运行&…

腾讯云动态公网IP绑定域名实现内网服务器公网穿透

公众号推广: 目前CSDN进行VIP可见,文章可在微信公众号进行免费的阅读。 文章内容经过认证实践,比较的清晰易懂,适合初次接触的人员。 目录 公众号推广: 需求场景: 解决方案: 实现方案:

1.5.4 HDFS 客户端操作-hadoop-最全最完整的保姆级的java大数据学习资料

文章目录1.5.4 HDFS 客户端操作1.5.4.1 Shell 命令行操作HDFS1.5.4.2 JAVA客户端1.5.4.2.1 客户端环境准备1.5.4.2.2 HDFS的API操作1.5.4.2.2.1 上传文件1.5.4.2.2.2 下载文件1.5.4.2.2.3 删除文件/文件夹1.5.4.2.2.4 查看文件名称、权限、长度、块信息1.5.4.2.2.5 文件夹判断1…

Letbook Cookbook题单——数组2

Letbook Cookbook题单——数组2 39. 组合总和 难度中等 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。…

Qgis加载arcgis的gdb格式数据

方式1:文件浏览器打开可直接看到图层,拖到可视区域即可。 方式2:gdb文件夹拖到可视区域即可。 方式3:图层-矢量-目录 该gdb可能没有坐标信息,需要跟甲方询问或者自己尝试

安卓APP源码和设计报告——快递查询录入系统

《多媒体通信技术》 题 目:快递 完 成 日 期 2022年05月 目 录 1 绪论1 2 设计方案2 2.1 设计思路和方案2 2.2 功能要求2 2.3 设计的流程图2 3 设计过程3 3.1 界面布局3 3.2 功能实现3 4 运行结果与分析4 4.1 设计的使用步骤4 4.2 运行结果与分析4 5 …

【数据结构】—带头双向循环链表的实现(完美链表)

目录前言链表的实现新节点的创建链表初始化尾插与尾删头插与头删查找数据在任意位置的插入与删除链表的销毁总结前言 链表结构一共有八种形式,在前面的文章里已经讲完了不带头单向非循环链表的实现,但是我们发现该链表实现尾插与尾删时比较麻烦&#xff…

Java学习多态之向上转型

目录 一、向上转型的本质 举例说明 父类-Animal 子类-Cat类 测试-PolyDetail 语法 Object类 二、向上转型的特点 第一条 第二条 第三条 例子 Base类 TopBase类 测试类 第四条 运行结果 多态的前提:两个对象(类)存在继承关系 …

【软件测试】测试新人咋迅速成为bug小能手?刮目相看......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 对于很多新入行测试…

Linux学习笔记

IO操作 概述 根据用户态和内核态的划分,用户态的进程是不能直接访问各种硬件资源的,只能向内核发起系统调用,由内核完成一系列操作再切回用户进程。 用户进程每次想要访问硬件资源(包括读和写)就叫做一次IO。 IO共有…

梦开始的地方——C语言文件操作详解

文章目录C语言文件操作1. 什么是文件?2.文件指针3.文件的打开和关闭4.文件的顺序读写fgetc&fputcfgets&fputsfread&fwritefscanf&fprintfscanf/fscanf/sscanf 对比 printf/fprintf/sprintf5.文件的随机读写(fseek&ftell &rewind)6. 文件结束…

兄弟机床联网

一、设备信息确认 1、确认型号 看面板颜色: 面板如果是彩色屏幕,大概率是可以做联网采集的。如果是黑白屏则需要进一步确认设备名牌。 看名牌: 名牌一般在设备后面,可以看到数控系统的品牌,一般C00和B00都是可以直接…

怎么写综述类论文? - 易智编译EaseEditing

一、确定综述的主题 每篇综述都应该有一个观点,即想要表达的事物。一篇综述不是简单的对相关发现的罗列。综述的真正功能是迈出下一步。已有的研究告诉了我们什么?以及我们下一步要怎么做? 确定综述的主题在撰写过程中是最重要的一步。这会…

快速上手几个Linux命令

Linux操作系统有很多功能,我们有很多方式可以使用这些功能,其中最简单和直接的方式就是命令行(Command Line) 用户与密码 当我们打开一个新系统的时候,第一件要做的事就是登录。系统默认有一个 Administrator 用户&a…

Vue学习:Vue中的数据代理

<!-- 准备容器 --><div idroot> <h2>学校名称&#xff1a;{{name}}</h2><h2>学校地址&#xff1a;{{adress}}</h2></div><script>const vm new Vue({ el: #root,data: {name:Jhon,adress:street 10},});</script> vm上…