ctf php弱类型md5,【CTF-PHP】PHP弱类型

以一道CTF题目引入对php弱类型的说明:

题目Writeup:

打开题目,提示输入密码

aec70a6cd1c8cf34cca43b335c2e055e.png

网页源码

发现“PHP-The best language for programming”

想起题目PHP-WEAK-TYPE

根据提示,应该是php弱类型绕过

先查看是不是存在php源码泄露

在http://120.24.215.80:10001/index.php~中发现存在php源码

打开网页源码:view-source:http://120.24.215.80:10001/index.php~

看到了PHP源码:

1134b50d1c9a62314d5b525b438f612b.png

PHP源码

需要提交md5值与QNKCDZO的md5值相等且不是QNKCDZO的字符

考虑php弱类型,QNKCDZO的md5值开始为0e,比较时化为科学记数法为0

md5为0e开始的字符还有:

240610708

s878926199a

s155964671a

s214587387a

s214587387a

s878926199a

s1091221200a

s1885207154a

输入其中一个,得到flag:

b42b611892ce99616f39712de84f562f.png

Flag

PS1.0:关于PHP源码泄露:

在URL上常见的几种PHP泄露类型.php~.index.php.swp.index.php.bak.index.php.swo.index.php.svn.index.php.zip.index.php.rar.index.php.txt.index.php.old

PS2.0:关于PHP弱类型

弱类型语言允许将字符看做多种类型,php就是一种弱类型语言

在php语言的==和===比较中

==:先把字符串类型变成相同,再进行比较

===:先判断字符串类型是否相同,再进行比较

(当字符串被当作一个数值来处理时,如果该字符串没有包含’.’,’e’,’E’并且其数值在整形的范围之内,该字符串作为int来取值,其他所有情况下都被作为float来取值,并且字符串开始部分决定它的取值,开始部分为数字,则其值就是开始的数字,否则,其值为0)

在上题中当QNKCDZO的md5值当作数值,其开始部分为0e,会被视作科学计数法,0的所有次方都是0,故,只需找到另一个md5值开始为0e的即可,0与0恒等,所以成功绕过,得到Flag。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值