zoukankan      html  css  js  c++  java
  • 2018.3 强网杯 部分writeup

    第一次跟大佬打ctf 啥都不会 腆着脸抄了一个writeup

    web签到题

    原题链接:http://39.107.33.96:10000/

    emmmm……

    拿到此题,第一反应是MD5碰撞(生日攻击?)

    查看网页源码

    这里面要求POST上去的参数 param1 != param2 && md5(‘param1’) == md5(‘param2’)

    这道题运用了php的一个哈希比较缺陷,就是php在处理0e开头md5哈希字符串时,会将他看成 0 ,PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

    提交上去

     然后到了第二个页面

    看一下源码

    此时比较符已经变成了 === 这样的类型

    php中,MD5函数所传入的参数必须是字符串类型,那么假设我们传入的不是一个字符串呢?

    我们构造一个数组试试

    可以看出 发现报错了

    这里边我们构造了一个数组,传入到md5()这个函数里边,报错提示md5()第一个参数必须为str类型。虽然说if条件不符合,但是程序依然会继续运行。

    抓包试一下,把参数改为数组

     

    还没拿到flag。。。。

     

     

     它事先定义了string类型了,之前的方法无法绕过去了。

    我们用到了fastcoll_v1.0.0.5 这个软件,用来生成两个有着相同MD5值的文件。

    先在桌面上建立一个空的文本文件,取名1.txt

    生成两个文件后,比较它们的md5值

     发现一模一样

    那我们怎么将文件传上去呢? 这里将文件转为url编码

     

    再用burpsuite抓一下包,修改一下参数

     

    flag is QWB{s1gns1gns1gnaftermd5}

  • 相关阅读:
    下载程序的疑问
    Beaglebone环境建立:电源适配器供电+网线ssh
    Android百分比布局支持库介绍——com.android.support:percent
    android应用中去掉标题栏的方法
    自己写的进度条
    返回图片指定点的RGB值
    修改指定图片的分辨率
    跨域访问的问题和解决过程
    C#取硬盘、CPU、主板、网卡的序号 ManagementObjectSearcher
    Sql Server字符串函数
  • 原文地址:https://www.cnblogs.com/P201521410043/p/8662354.html
Copyright © 2011-2022 走看看