天天看点

BUUCTF[RoarCTF 2019]Easy Calc

[RoarCTF 2019]Easy Calc

BUUCTF[RoarCTF 2019]Easy Calc

查看源码

BUUCTF[RoarCTF 2019]Easy Calc

$("#content").val():

获取id为content的HTML标签元素的值,是JQuery,

发现有calc.php,看看有什么

BUUCTF[RoarCTF 2019]Easy Calc

这里显示了waf的过滤规则

我们上传字符发现都被过滤了,这里考察的是PHP的字符串解析特性

PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

1.删除空白符

2.将某些字符转换为下划线(包括空格)

利用这个特性,我们就可以在num前面加一个空格,然后就能绕过waf,执行php

我们发现过滤了"/",因此用chr()将ASCII转换为字符串,这个字符的ASCII码是47

可以使用的函数:

var_dump() 函数用于输出变量的相关信息

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

file_get_contents() 把文件内容读取到字符窜

先用scandir列出根目录下的文件,构造:? num=1;var_dump(scandir(chr(47)))

BUUCTF[RoarCTF 2019]Easy Calc

找到flag文件名

转换为ASCII为:

BUUCTF[RoarCTF 2019]Easy Calc

用file读取文件内容

构造:? num=1;var_dump(file(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

BUUCTF[RoarCTF 2019]Easy Calc

“.” 点号的作用是用来拼接字符的,结果形式为 /f1agg