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的更多相关文章

  1. 第二届强网杯-simplecheck

    这次强网杯第一天做的还凑合,但第二天有事就没时间做了(也是因为太菜做不动),这里就记录一下一道简单re-simplecheck(一血). 0x00 大致思路: 用jadx.gui打开zip可以看到,通 ...

  2. 第二届强网杯部分题writeup

    0x00 题目名称 签到 操作内容:   FLAG值: flag{welcome_to_qwb} 0x01 题目名称 Weclome 操作内容: 通过查看文件发现是一个bmp格式的图片文件,然后加上后 ...

  3. 第二届强网杯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% ...

  4. i春秋第二届春秋欢乐赛RSA256writeup

    i春秋第二届春秋欢乐赛writeup 下载之后进行解压 发现四个文件 0x01看到题目是RSA的  又看到public.key 所以直接用kali linux的openssl 0x02可以看到e就是E ...

  5. 强网杯2018 - nextrsa - Writeup

    强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录 ...

  6. 2019 第三届强网杯线上赛部分web复现

    0x00前言 周末打了强网杯,队伍只做得出来6道签到题,web有三道我仔细研究了但是没有最终做出来,赛后有在群里看到其他师傅提供了writeup和环境复现的docker环境,于是跟着学习一波并记录下来 ...

  7. [第二届构建之法论坛] 预培训文档(C++版)

    本博客是第二届构建之法论坛暨软件工程培训活动预培训文档中[适用于结对编程部分的C++版本],需要实验者有一部分C++基础. 目录 Part0.背景 Part1.配置环境 Part2.克隆项目 Part ...

  8. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  9. Ta说:2016微软亚洲研究院第二届博士生论坛

    ​ "聚合多元人才创造无尽可能,让每一位优秀博士生得到发声成长机会"可以说是这次微软亚洲研究院博士生论坛最好的归纳了.自去年首次举办以来,这项旨在助力青年研究者成长的项目迅速得到了 ...

随机推荐

  1. 变量的解构赋值////////////z

    变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 圆括号问题 用途 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值, ...

  2. 浅谈mysql集群

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  3. 典型的 SQL 注入过程(转)

    无意间发现某站点存在 SQL 注入漏洞,于是利用这个漏洞提权并获取服务器控制权.这个案例很典型,像是教科书式的典型入侵步骤,下面就以这个案例展示从 SQL 注入到获取目标服务器控制权限的全过程. 发现 ...

  4. ext 扩展控件—moneyField

    /** *数字控件 *带大写提示,和千分位 **/ Ext.define(appNameSpace+'.utils.MoneyField', { extend : 'Ext.form.field.Te ...

  5. SpringMVC中使用bean来接收form表单提交的参数时的注意点

    这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点 ...

  6. SQL中创建外键约束

    alter table 表名 add constraint 外键约束名 foreign key(列名) references 引用外键表(列名)

  7. Docker安装(一)

    环境:CentOS release 6.9 (Final)   1.检查环境是否支持安装docker 1)系统内核是否是3.8或更高版本 uname -a (这个安装不了,内核版本不够) Linux ...

  8. HTML学习笔记09-列表

    HTML支持无序,有序,自定义列表 列表项内部可以使用段落.换行符.图片.连接.以及其他列表等 无序列表 无序列表使用粗体圆点(典型的小黑圆圈)进行标记,列表始于<ul>标签,列表项使用& ...

  9. mongodb morphia删除数组中指定条件的数据

    先看mongodb操作: db.test.update({"msgid":170},{"$pull":{"msg":{"comti ...

  10. Go实现Pow工作量证明

    之前使用python编写了一段代码实现了工作量证明机制,近期由于参与以太坊智能合约开发钱包的工作接触到golang语言,所以借此以go来实现Pow(Proof of work). 实现代码如下: // ...