逗比学CTF.day2
BUU CODE REVIEW 1
本体包含html传参,弱类型比较,反序列化
首先是原题源码
<?php
/*** Created by PhpStorm.* User: jinzhao* Date: 2019/10/6* Time: 8:04 PM*/
# 显示文件源码
highlight_file(__FILE__);class BUU {public $correct = "";public $input = "";
# 这里的__destruct()属于魔术方法,即:对象的所有引用都被删除或者当对象被显式销毁时执行public function __destruct() {try {$this->correct = base64_encode(uniqid());if($this->correct === $this->input) {echo file_get_contents("/flag");}} catch (Exception $e) {}}
}
# 程序入口,通过get传入pleaseget,POST传入pleasepost
if($_GET['pleaseget'] === '1') {if($_POST['pleasepost'] === '2') {# MD5弱类型比较if(md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52']) {unserialize($_POST['obj']);}}
}
第一步:html传参进入程序
传参方式 | 变量名 | 值 |
---|---|---|
GET | pleaseget | 1 |
POST | pleasepost | 2 |
第二步:MD5绕过
绕过两种方式:一个是MD5值为0E开头的字符串,一个是数组绕过
(一)MD5值为0e开头的字符串
由于科学计数法,所有0e开头,后面跟数字的字符串,系统默认为转为数字进行比较,其值均为0
原值 | MD5值 |
---|---|
QNKCDZO | 0e830400451993494058024219903391 |
240610708 | 0e462097431906509019562988736854 |
s878926199a | 0e545993274517709034328855841020 |
s155964671a | 0e342768416822451524974117254469 |
s1885207154a | 0e509367213418206700842008763514 |
(二)数组绕过
在弱类型比较中,系统默认将数组转换成数值进行比较,值为0
*值得注意的是虽然值都为0,但是只能数组和数组比较,字符串和字符串比较
第三步:反序列化
利用起来比较简单,但理解比较费劲。直接说利用,原代码中的方法复制,然后进行序列化,将序列化后的结果,当做值传入
<?php
class BUU {public $correct = "";public $input = "";public function __destruct() {try {$this->correct = base64_encode(uniqid());if($this->correct === $this->input) {echo file_get_contents("/flag");}} catch (Exception $e) {}}
}$obj= new BUU;#‘&’符号为引用,意思是:不同的名字使用同一个变量内容。$obj->input=&$obj->correct;echo serialize($obj);
得到结果:O:3:“BUU”:2:{s:7:“correct”;s:0:"";s:5:“input”;R:2;}
类中的方法不会被序列化,所以可以把function __destruct()部分内容去掉
第四步:将所有内容串起来,获取flag
我使用的是postman,传参比较清晰,参数和头部修改起来比较方便(也可以使用hackbar,BP改请求包,个人喜好)
flag{232c3336-6db4-40d0-b011-2696aedf4009}
逗比学CTF.day2相关推荐
- 逗比学CTF.day8
[GXYCTF2019]Ping Ping Ping 从题目上看应该是代码执行漏洞 果然没猜错,get获取IP变量的值,然后执行,试一下: 直接执行成功,有点不可思议,我直接cat flag.php, ...
- 南邮tip sql.php_南京邮电大学 CTF Write Up
这次来看看某著名大学-- (Ps:因本人较懒,所以做题时都是手工+度娘,几乎没有用到浏览器以外的工具,如有更好的办法,欢迎留言告知~) Web 签到题 直接查看源代码吧.. key在哪里? nctf{ ...
- 逗比学树莓派之GPIO
wiringPi适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群.wiringPi的API函数和arduino很相似,这也使得它广受欢迎.作者给出了大量的说明 ...
- switchyomega插件_CTF|你所关注的CTFer都在用的插件合集【附:XXE补给+CTF训练集】...
不看后悔系列,建议收藏 相信大家对 CTF 都不陌生了,今天为大家带来了一系列 CTF 必备 Chrome 插件. CTF 可能很多人想学 CTF,但又怕零基础学不懂.其实,CTF 并没有那么难. C ...
- 写一下自已对ctf的了解,以便日后自已需要
11.7 本人ctf小白,参加比赛基本处于摸鱼状态,也没有系统了解过ctf以及做过相关的实践和练习,但是,对这一块比较感兴趣,所以,只能说,在学习中,就跟我当初学makefile一样,做下记录,写点自 ...
- [CTF] CTF入门指南
CTF入门指南 何为CTF ? CTF(Capture The Flag)夺旗比赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式.CTF起源于1996年DEFCON全球黑客大会 ...
- otf和ctf的意义_《亲爱的,热爱的》带火网络安全圈的CTF 但为何圈内人吐槽?...
近日,正在热播的电视剧<亲爱的,热爱的>将小众名词CTF推向了社会大众. 有网友表示,正是因为看了电视剧,认真搜了什么是CTF,并且想认真学习它. 有网友表示想学CTF 还有网友表示,网络 ...
- IDF - CTF - 牛刀小试
发现一个学CTF的好地方,IDF实验室的CTF训练营(http://ctf.idf.cn/).. 刚接触CTF,来玩下牛刀小试,AK了..好爽好爽.. 1.摩斯密码 嘀嗒嘀嗒嘀嗒嘀嗒 时针它不停在转动 ...
- PHPer转战Android的学习过程以及Android学习
原文作者: eoeadmin 原文地址: http://my.eoe.cn/shuhai/archive/19684.html ------------------------------------ ...
最新文章
- STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!
- 棋盘代码_【案例】 绘制国际象棋棋盘?(turtle 登场)
- 过滤:filter、结果收集(数组)
- 【开源项目之路】jquery的build问题
- k8s系列--- dashboard认证及分级授权
- 数据库 事务隔离级别之可重复读
- 关系型数据库 vs 非关系型数据库
- 7.3通过JVM来监控Spring Boot
- Atitit.注重细节还是关注长远??长远优先
- Keras-Unet-语义分割
- 关于偏微分、全微分总结
- 《游戏大师Chris Crawford谈互动叙事》一第 6 章 数学之苦劳
- 利用地图API定制开发电子地图应用系统
- 北京交通大学计算机学院 于剑,北京交通大学计算机与信息技术学院硕导介绍:于剑...
- favicon自动获取_wordpress网站友情链接页面使用DNSPod自动获取网站favicon图标教程...
- 运放的基本应用电路-运放电路设计-运算放大器的基本应用电路
- 索尼机型刷机不用愁 带你玩转一键解锁
- 模糊控制——(3)模糊自适应整定PID控制
- OCR识别软件(uTools)→{个人笔记记录}
- n个点求 能构成多少个三角形
热门文章
- 学习笔记:贝塞尔曲线法
- C语言小项目实践——日历程序
- 办公网建设设备选型及报价参考(500人规模)
- codeigniter linux url 大写,CodeIgniter中使用Smarty3基本配置
- uniapp 本地相册选择图片
- NCPC2016-A-ArtWork
- LR(1)分析法的总控的实现(C++实现)
- 蓝桥杯评分标准_第十届蓝桥杯软件个人赛校内选拔赛评分标准和选拔标准.doc...
- [转]什么?你还不会写JQuery 插件
- 计算机的键盘组合件,电脑组合键盘快捷键大全