CBC翻转攻击(实验吧_简单的登陆题)
题目链接
http://ctf5.shiyanbar.com/web/jiandan/index.php
有源码在test.php页面
分析代码过程

如果post id,将id转字符串,然后进入sqliCheck函数,

如果函数返回true,就停了,
否则,将id转成array
然后到login函数

这里将$info序列化,然后aes加密,进行base64后,进行setcookie
这里也就得到了,抓包发现的那个

这里要注意的是,它的逻辑是,如果你输入有id,那是不会检查你的cookie的,也就是说,有id的情况下,是不会执行sql语句的,也就是会一直显示那个Hello

如果没有post id,那就检测cookie,
如果存在iv,和cipher 那就进入show_homepage();

将两个参数base64解密,然后用openssl_decrypt()将密文解密,再进行反序列化,然后进行sql查询
进过上面的分析得知,过滤了很多函数,其实最重要的是过滤了#号和-号,这样子就无法
将那段sql语句后面的,0注析掉了
所以只能在cookie处入手
这里用到CBC反转攻击
参考文章http://sec.chinabyte.com/228/13511728.shtml
文章的例子

第一块的密文用来生成后一块明文
也就是说要修改第一块的密文
6对应的第一块的明文是2,偏移量为2
在题目中,我们知道的是密文,还有偏移量,第一段的明文,那就可以修改明文的数据
参考P神的writeup中的,输入id = 12

得到的$info和$cipher
得到偏移量为4

相对应的第一块为}
我们尝试将2换成#,起到注析后面语句的作用
得到新的cipher


返回源码看

是无法进行序列化
并得到了一个新明文
无法进行序列化是因为iv不正确
那根据 新iv = 原iv^原明文^新明文 可以得到新的iv

也就是成功将2修改成#号了
但是这里有一个问题就是,虽然#号可以注析后面的语句,但是一旦我们的语句很长,那我们要修改的密文就可能不是第一块了,那就会导致翻转很麻烦,那就是想办法用其他方式注析掉后面的语句,这里可以用%00截断(和改包上传的原理一样),这里不可以直接将%00写到payload里面去,因为会被解码的,所以可以当是一个不可见字符,用python的chr(0)写入。
将上面的逻辑整理一下
1、输入id,访问得到iv和cipher
2、将cipher内容改变,然后去掉id,将iv和新cipher加到cookie里面去访问,显示无法序 列化,得到明文,然后要获取新iv 新iv = 新明文^原明文^原iv
3、将新cipher和新iv添加到cookie里面,再次访问,成功反序列化,进行sql查询
按照上面的思路,写脚本
第一次获取iv和cipher

访问请求得到新明文

获取新iv

再次访问Niepost执行SQL语句
所以程序运行顺序就是

(这是本地搭建的)


详细代码在我的GitHub: https://github.com/niechaojun/CBC-flip-attack/
CBC翻转攻击(实验吧_简单的登陆题)的更多相关文章
- 于bugku中游荡意外得到关于CBC翻转攻击思路
个人简介:渣渣一枚,萌新一个,会划水,会喊六六今天在bugku遇到关于CBC翻转攻击的题目,总结了一下关于CBC翻转攻击的原理,以及关于这道题目的解题思路个人博客:https://www.cnblog ...
- CTF实验吧-WEB题目解题笔记(1)简单的登陆题
1.简单的登陆题 解题链接: http://ctf5.shiyanbar.com/web/jiandan/index.php Burp抓包解密 乱码,更换思路.尝试id intruder 似乎也没什 ...
- 实验吧_简单的sql注入_1、2、3
简单的sql注入1 看着这个简单的界面,一时间没有特别好的思路,先输入一个1',发生了报错 初步猜测这是一个字符型的注入,他将我们输入的语句直接当成sql语句执行了,按题目的意思后面肯定过滤了很多注入 ...
- Padding Oracle 和 CBC字节翻转攻击学习
以前一直没时间来好好研究下这两种攻击方式,虽然都是很老的点了= =! 0x01:Padding oracle CBC加密模式为分组加密,初始时有初始向量,密钥,以及明文,明文与初始向量异或以后得到中间 ...
- 实验吧之【简单的登录题(】CBC字节反转攻击)
开始刷ctf题吧 慢慢来. 实验吧---简单的登录题 题目地址:http://ctf5.shiyanbar.com/web/jiandan/index.php 随便提交一个id,看到后台set了两个 ...
- CBC字节翻转攻击
iscc2018线上赛开始两周多了,学到了很多,写几篇文章总结一下遇到的知识点,做一个归纳,方便以后查找. web300-----CBC字节翻转攻击 cbc是AES加密的cbc模式 即密码分组链模式: ...
- CSAPP缓冲区溢出攻击实验(上)
CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数 ...
- CSAPP缓冲区溢出攻击实验(下)
CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将g ...
- CSAPP lab3 bufbomb-缓冲区溢出攻击实验(上)smoke fizz
前言 完成这个实验大概花费一天半的时间,看了很多大佬的博客,也踩了很多的坑,于是打算写一篇博客重新梳理一下思路和过程,大概会有两篇博客吧. CSAPP lab3 bufbomb-缓冲区溢出攻击实验(上 ...
随机推荐
- thinkphp5 taglib自定义标签教程
学着写了一下,终于搞定了,顺便分享一下!taglib是tp框架自定义标签功能,如果你用过cms,肯定见过类似: {dede:arclist typeid='' row='' col='' titlel ...
- 【Linux】积累笔记
■ 关于查看系统的一些版本信息 查看系统的发行版本可以用 cat /etc/issue 或者 cat /etc/redhat-release (Centos上) 查看系统的内核版本以及系统位数 una ...
- Algorithm --> 求1到n的和
求1到n的和 输入n,求和1到n,要求不能使用乘除法,不使用任何if while for 以及三目运算,怎么做? 版本一 static int f(int n) { n && (n + ...
- 2017-11-15 软件包 java.io学习
接口摘要 一.接口Closeable 方法摘要:void:close();关闭此流并释放与此流关联的所有系统资源.如果已经关闭该流,则调用此方法无效 涉及的异常信息:IOException ----- ...
- mac上Pycharm个性化快捷键,类似Myeclipse的快速复制等快捷键
好几天没写博客了,在win10下写了几天python,然后下了pycharm使用,发现还可以,但是太笨重了,切回了mac,然后装了pycharm社区版本. 但是这个使用太别扭了,没有myeclipse ...
- Wannafly交流赛1(施工中)
A.有理数 签到题:直接用floor函数就行了,详细看代码 #define debug #include<stdio.h> #include<math.h> #include& ...
- PTA博客制作的模版
C高级第 次PTA作业( ) 题目 - 此处填写题目名称 1.设计思路 (1)算法 (2)流程图 2.实验代码 此处填写代码 3.本题调试过程碰到问题及解决办法 错误信息: 错误原因: 改正方法: 提 ...
- PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点
PHP.Java.Python.C.C++ 这几种编程语言都各有什么特点或优点 汇编: C: Java: C#: PHP: Python: Go: Haskell: Lisp: C++: &l ...
- 在arc模式下 CGImage 释放问题
//大图bigImage //定义myImageRect,截图的区域 if (imagecount >= 3) { CGRect myImageRect; if (i.size.width< ...
- bzoj千题计划243:bzoj2325: [ZJOI2011]道馆之战
http://www.lydsy.com/JudgeOnline/problem.php?id=2325 设线段树节点区间为[l,r] 每个节点维护sum[0/1][0/1] 从l的A/B区域到r的 ...