博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018.3 强网杯 部分writeup
阅读量:5023 次
发布时间:2019-06-12

本文共 782 字,大约阅读时间需要 2 分钟。

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

web签到题

原题链接:

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}

 

转载于:https://www.cnblogs.com/P201521410043/p/8662354.html

你可能感兴趣的文章
ORACLE增删改查以及case when的基本用法
查看>>
[转]oracle10客户端PL/SQL Developer如何连接远程服务器上的oracle数据库
查看>>
HTML5 表单元素和属性
查看>>
SDUTOJ 2498 数据结构实验之图论十一:AOE网上的关键路径
查看>>
使用SpringSocial开发QQ登录
查看>>
好玩的游戏
查看>>
2.6. Statistical Models, Supervised Learning and Function Approximation
查看>>
代码说明call和apply方法的区别 (咱们这方面讲解的少,这样的题有变式,需要举例讲解一下)...
查看>>
T-SQL 类型转换
查看>>
在eclipse中设计BPMN 2.0工作流定义的根本步骤
查看>>
Json对象与Json字符串互转(4种转换方式)
查看>>
PAT甲级1002 链表实现方法
查看>>
查看Linux信息
查看>>
Python中sys模块sys.argv取值并判断
查看>>
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)
查看>>
并查集
查看>>
ubuntu 11.04下android开发环境的搭建!
查看>>
Bzoj 3343: 教主的魔法
查看>>
括号序列(栈)
查看>>
一件趣事
查看>>