ctfshow-web5(md5弱比较)

打开题目链接是html和php代码

ctfshow-web5(md5弱比较)_第1张图片

html没啥有用信息,这里审一下php代码 :

要求使用get方式传入两个参数 v1,v2

ctype_alpha()函数:用于检查给定的字符串是否仅包含字母;

is_numeric()函数:检测字符串是否只由数字组成,如果字符串中只包括数字,就返回Ture,否则返回False。

也就是说v1只能是字母,v2只能是数字

并且 md5($v1)==md5($v2),即传入的两个参数经过md5加密后要相等,才会输出flag

先给大家一个符合条件的payload:

?v1=QLTHNDT&v2=240610708

直接拿下

ctfshow-web5(md5弱比较)_第2张图片

关于上面payload的解释:

QLTHNDT 和 240610708经过md5加密后密文都以0e开头,PHP会当作科学计数法来处理,也就是0的n次方,得到的值比较的时候都相同。

其他关于php常见特性的绕过可以参考我另一篇博客:

http://t.csdnimg.cn/MReEG

拓展:

在php中

== 是弱等于:在比较前会先把两种字符串类型转成相同的再进行比较,它不会比较变量类型,只比较值。

=== 是强等于:在比较前会先判断两种字符串类型是否相同,再进行比较,即先比较类型再比较值,需要都相等才会返回true。

你可能感兴趣的:(web,PHP,CTF,md5,php,web安全,代码审计)