第二届强网杯部分writeup
MD5部分
第一题

一看就有些眼熟 emmmm
查看一下源代码:

重点是这里

这里面要求POST上去的参数 param1 != param2 && md5(‘param1’) == md5(‘param2’)
这道题运用了php的一个哈希比较缺陷,就是php在处理0e开头md5哈希字符串时,会将他看成 0 (具体下面那篇文章)PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
http://www.freebuf.com/news/67007.html
那么,我们构造两个不一样的字符,md5加密后以0E开头的,就可以验证成功

提交上去

成功
第二题

依旧是一道和MD5有关的
我们看一下源代码

此时比较符已经变成了 === 这样的类型 ,我们可以知道,在php官方给出的补丁中,就是改用了===修复了这个缺陷。
在PHP中,我们可以知道,md5()这个函数是这样定义的:md5(string,raw)
也就是说,第一个必须是字符串,那么假设我们传入的不是一个字符串呢?
我们构造一下php代码看看

运行一下

发现报错了
这里边我们构造了一个数组,传入到md5()这个函数里边,报错提示md5()第一个参数必须为str类型。但是程序依然会继续运行,我们修改一下代码看看是不是这样的

这里我们加入判断,显然,if的条件是不符合的,那么,程序会不会输出seccess呢?
我们运行一下

这里我们看到,即使条件不符合,也打印出了seccess
因此,这里我们只要通过burp抓包,将提交的参数改成数组,就可以了

第三题

先来看看源代码

这里限定了str的类型,第二题的方法在这里就不适用了。
因此我们在这里,使用的是文件的碰撞。
我们用到了fastcoll_v1.0.0.5 这个软件,用来生成两个有着相同MD5值的文件。
先创建两个空的TXT文件,分别为1.txt和2.txt,两个文件名不一样即可
命令如下:

这边已经生成了两个文件,我们校验一下他们的MD5值

我们可以看到,他的MD5是相等的
那么我们怎么提交上去了?没错,就是URL编码成二进制
Py3代码如下

就得到了两个文件的编码,我们通过burp抓包,然后把我们的东西提交上去

成功的拿到了flag
PS:这里西安的大佬说要构造一下XFF头,虽然不知道为什么,但还是听了一下大佬的话。
自此,MD5部分完成。
第二届强网杯部分writeup的更多相关文章
- 第二届强网杯-simplecheck
这次强网杯第一天做的还凑合,但第二天有事就没时间做了(也是因为太菜做不动),这里就记录一下一道简单re-simplecheck(一血). 0x00 大致思路: 用jadx.gui打开zip可以看到,通 ...
- 第二届强网杯部分题writeup
0x00 题目名称 签到 操作内容: FLAG值: flag{welcome_to_qwb} 0x01 题目名称 Weclome 操作内容: 通过查看文件发现是一个bmp格式的图片文件,然后加上后 ...
- 第二届强网杯wp
web web签到 利用了md5碰撞 payload为 param1 =%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b% ...
- i春秋第二届春秋欢乐赛RSA256writeup
i春秋第二届春秋欢乐赛writeup 下载之后进行解压 发现四个文件 0x01看到题目是RSA的 又看到public.key 所以直接用kali linux的openssl 0x02可以看到e就是E ...
- 强网杯2018 - nextrsa - Writeup
强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录 ...
- 2019 第三届强网杯线上赛部分web复现
0x00前言 周末打了强网杯,队伍只做得出来6道签到题,web有三道我仔细研究了但是没有最终做出来,赛后有在群里看到其他师傅提供了writeup和环境复现的docker环境,于是跟着学习一波并记录下来 ...
- [第二届构建之法论坛] 预培训文档(C++版)
本博客是第二届构建之法论坛暨软件工程培训活动预培训文档中[适用于结对编程部分的C++版本],需要实验者有一部分C++基础. 目录 Part0.背景 Part1.配置环境 Part2.克隆项目 Part ...
- 刷题记录:[强网杯 2019]Upload
目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...
- Ta说:2016微软亚洲研究院第二届博士生论坛
"聚合多元人才创造无尽可能,让每一位优秀博士生得到发声成长机会"可以说是这次微软亚洲研究院博士生论坛最好的归纳了.自去年首次举办以来,这项旨在助力青年研究者成长的项目迅速得到了 ...
随机推荐
- 深入 JAVA里面关于byte数组和String之间的转换问题
把byte转化成string,必须经过编码. 例如下面一个例子: importjava.io.UnsupportedEncodingException; publicclass test{ pub ...
- 学习pthreads,使用条件变量进行多线程之间的同步
条件变量提供另一种多线程同步的方法.互斥量通过控制对共享数据的访问来同步任务.条件变量可以根据数据的值来同步任务.条件变量是当一个事件发生时发送信号的信号量.一旦事件发生,可能会有多个线程在等待信号, ...
- Ext.Net 1.x_Ext.Net.GridPanel嵌套Checkbox
解决办法:拼接HTML var tplchecked = '<input type="checkbox" {0}>'; var IsChecked = function ...
- Xcode中的调试工具栏简介
如下图所示: 从左至右,第一个按钮用来隐藏调试区域. 第二个按钮向你展示断点是否被全局开启或禁用.如果它不是高亮蓝色,则没有断点会被触发. 第三个按钮暂停或继续程序的执行,你一般点击它继续运行到程序的 ...
- Java进阶(十)java tomcat中context配置
Tomcat中Context的配置 问题: java tomcat中<context> docBase属性是什么意思? 元素的属性: path:指定访问该Web应用的URL入口. doc ...
- jQuery 瀑布流插件: Wookmark
原文链接: jQuery Wookmark 在线示例: jQuery Wookmark Demo Wookmark官网: http://www.wookmark.com/jquery-plugin 翻 ...
- java工具类(五)之日期格式字符串与日期实现互转
JAVA字符串转日期或日期转字符串 项目开发过程中需要实现日期格式的字符串与日期进行互转,并进行日期的加减操作. Demo如下: package weiming.lmapp.utils; import ...
- Android 之dragger使用
1.依赖的注入和配置独立于组件之外,注入的对象在一个独立.不耦合的地方初始化,这样在改变注入对象时,我们只需要修改对象的实现方法,而不用大改代码库. 2.依赖可以注入到一个组件中:我们可以注入这些依赖 ...
- /dev、/sys/dev 和/sys/devices 和udev的关系
/dev,设备文件存储目录,应用程序通过对这些文件的读写和控制,可以访问实际的设备: /sys/devices目录,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备:是文件系统管理设备的最 ...
- DB Query Analyzer 6.03, the most excellent Universal DB Access tools on any Microsoft Windows OS
DB Query Analyzer 6.03, the most excellent Universal database Access tools on any Microsoft Wind ...