代码编织梦想

题目

访问网页

输入数字

输入字母

查看源代码,发现了一个calc.php文件,同时还存在waf

访问这个php文件,发现存在黑名单,过滤了字母,\t,\等字符

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

试试传参

 试试phpinfo,发现被waf拦截了,这里就要考虑waf绕过了

利用php字符串解析特性进行waf绕过,具体的php字符串解析特性可以进下方的链接了解一下,

利用PHP的字符串解析特性Bypass - FreeBuf网络安全行业门户

PHP将查询字符串(在URL或正文中)转换为内部$_GET或的关联数组$_POST。例如:/?foo=bar变成Array([foo] => “bar”)。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20news[id%00=42会转换为Array([news_id] => 42)。如果一个IDS/IPS或WAF中有一条规则是当news_id参数的值是一个非数字的值则拦截,那么我们就可以用/news.php?%20news[id%00=42"+AND+1=0--绕过。

也就是说waf既然不允许num传递除数字外的字符如字母等,那我们就把"num"变成"  num",然后waf就找不到num,匹配不到,上面所设置的黑名单就没办法使用,但是php网页解析的时候会自动把空格去掉,所以我们在这题里面,在num前面加一个空格,也就是? num(注意中间有空格)就可以了

因为字母等等的被过滤了,所以将除数字外的字符转换为ASCII码代替,目录读取:

http://node4.buuoj.cn:25651/calc.php?%20num=var_dump(scandir(chr(47)))

 发现flag

flag读取

http://node4.buuoj.cn:25651/calc.php?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

得到flag

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_53148935/article/details/124708018

BUUCTF WEB [RoarCTF 2019]Easy Calc-爱代码爱编程

BUUCTF WEB [RoarCTF 2019]Easy Calc 打开网页是一个计算的!!随便输入可以计算,然后就没啥了,右键源代码: 存在waf,,还有个新的页面!进行访问,看到源代码: <?php error_reporting(0); if(!isset($_GET['num'])){ show_source(__FILE

BUUCTF [RoarCTF 2019] Easy Calc-爱代码爱编程

BUUCTF [RoarCTF 2019] Easy Calc 启动靶机,打开页面: 一个简单的计算器页面,查看网页源码: 提示设置了WAF以确保安全,尝试访问calc.php: 得到了WAF源码,分析代码: 需要传入变量num的值设置了一系列黑名单的值如果传入的变量num中有黑名单包括的符号,将终止程序否则将输出num的内容根据PHP的解析

BUUCTF__[RoarCTF 2019]Easy Calc_题解-爱代码爱编程

一、看题 拿到题目输入发现会显示简单的计算。想到是不是ssti模板注入。尝试{{1+1}}报错,行不通。F12查看源码。发现存在WAF,访问 calc.php 。尝试访问得到源代码。<?php error_reporting(0); if(!isset($_GET['num'])){ show_source(__FILE__); }else

BUUCTF-web-[RoarCTF 2019]Easy Calc-爱代码爱编程

有一段注释说这题有WAF,那肯定思路就是如何绕过WAF拿到flag了进入题目是一个计算器,只能输入正常的数学计算式,字母什么的都输入不了,回显计算不出来,查看源码,发现是在calc.php里面计算的,而且提示说存在Waf,这些字母应该就是Waf过滤的,访问calc.php <?php error_reporting(0); if(!isset($_

BUUCTF之[RoarCTF 2019]Easy Calc-爱代码爱编程

1.题 2.题样 3.测试,数字,字母: 字母都不能计算: 查看源码,说有WAF,看到提示有一个calc.php文件,访问试试: ![](https://img-blog.csdnimg.cn/20200717120212511.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shado

BUUCTF[RoarCTF 2019]Easy Calc-爱代码爱编程

[RoarCTF 2019]Easy Calc 查看源码 $("#content").val(): 获取id为content的HTML标签元素的值,是JQuery, 发现有calc.php,看看有什么 这里显示了waf的过滤规则 我们上传字符发现都被过滤了,这里考察的是PHP的字符串解析特性 PHP需要将所有参数转换为有效的变量名,因此在解析查

BUUCTF RoarCTF 2019]Easy Calc 1-爱代码爱编程

BUUCTF RoarCTF 2019]Easy Calc 1-刷题个人日记 小白一个,写给自己看。 进去后是这样: 随便输入几个运算,就是一个普通的计算器。尝试sql注入,输入1'和1'#: 好8,计算器怎么会连接数据库呢,想太多了。(不过实战也是能想到的方法都试试) ctrl+u看网页代码,发现了一个网页:calc.php 进去看看:所以之前的网页只

buuctf_[RoarCTF 2019]Easy Calc-爱代码爱编程

叫我们输入表达式,我们随便输入点数据,然后再答案中显示出来,感觉看不出啥来,查看源码 发现.ajax;.ajax是指通过http请求加载远程数据。然后后面发现一个calc.php后面传入一个num参数;尝试看一下这个calc.php页面发现过滤了一些字符,如果能绕过,就可以用eval执行任意PHP代码;在正则表达式中对每一个黑名单来连接字符串;/m表示多

buuctf--[RoarCTF 2019]Easy Calc 1--WAF-爱代码爱编程

点击链接,进入默认页面:是一个计算器的小应用 f12,查看源码可以得到提示:这样我们知道有个calc.php文件,还有个num变量 同时还知道设置了WAF 现在查看calc.php:因为显示了源码,我们也知道了会过滤一些输入 接下来开始正式解题: 首先WAF会限制我们对num的输入,不能出现字母 但是通过在num和?间加一个空格就可以绕过:对比: 接下

BUUCTF:[RoarCTF 2019]Easy Calc1-爱代码爱编程

 就是这样一个界面。 查看源码 提示有waf。  这里JS读取了calc.php这个页面的数据。    查看这个页面: 果然:  黑名单过滤了一些字符。 每当我输入字母,他就会直接报错,虽然不是黑名单中的字符,怎么也报错了,那就应该是一个waf的拦截了。 这里要绕waf,要绕过黑名单,最后用eval()函数执行PHP代码。

BUUCTF [RoarCTF 2019] Easy calc-爱代码爱编程

打开题目发现啥都无,就只有一个计算器,没什么头绪,抓个包看一下。 到时抓到了不错的的东西 Calc.php,拉到题目里看一下 给了源码和相应的限制条件,可以见到,题目将”\”屏蔽了,抓包看到的上边有WAF,想着试试让num=phpinfo()试试能不能行 结果是被ban掉了,后想起可以利用PHP字符串解析的特性来尝试着绕过。

web buuctf [RoarCTF 2019]Easy Calc1-爱代码爱编程

1.   这里面一共两个问题,一个是waf(WEB应用层上的防御策略),一个是脚本 2.根据提示我们查看一下calc.php文件  这段代码可以看到num传参的时候,哪些值会被过滤掉 脚本的绕过因为有代码所有可以有针对性的写,问题是我们需要得到权限,就必然会输入字符语句,但是字符会报错,所以问题在于waf的绕过(我想用多阶注入,但是没有节点)

BUUCTF WEB [RoarCTF 2019]Easy Calc1-爱代码爱编程

看源码   有waf   有个calc.php 打开是过滤规则 <?php error_reporting(0); if(!isset($_GET['num'])){ //判断是否为空 show_source(__FILE__); }else{ $str = $_GET['num'];

BUUCTF [RoarCTF 2019]Easy Calc1-爱代码爱编程

一.打开题目后: 二.Ctrl+U查看源代码: 发现存在WAF和一个文件calc.php,这里我们就需要简单的了解下什么是WAF了: WAF的全称是(Web Application Firewall)即Web应用防火墙,简称WAF。 那么WAF能做什么?     WAF可以过滤HTTP/HTTPS协议流量,防护Web攻击。     WA

BUUCTF [RoarCTF 2019]Easy Calc-爱代码爱编程

文章目录 一、 [RoarCTF 2019]Easy Calc1、检查源码2、利用PHP的字符串解析绕过 一、 [RoarCTF 2019]Easy Calc 1、检查源码        1、当拿到题目时,本人以为是使用Linux命令获取flag,但是尝试之后不行       2、检查源码,发现了calc.php,打开        3、

web buuctf [RoarCTF 2019]Easy Java1-爱代码爱编程

考点: java web.xml配置文件漏洞 漏洞:【漏洞公告】Java web.xml 信息泄漏漏洞 - 阿里云安全产品和技术 - 阿里云 漏洞产生原因:通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映

【BUUCTF】[RoarCTF 2019]Easy Calc1-爱代码爱编程

题目网页是一个计算器 查看源代码发现线索calc.php 直接访问  这里eval对get的内容执行,尝试注入php代码  前面也说了waf,我们这里利用php解析字符串的特性来绕过 PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事: 1)删除空白符 2)将某些字符转换为下划线(包括空格)