CTFshow web(php命令执行 68-71)

                                                                       web68

         

还是那句话,没看到flag在哪,那就优先找到flag位置

这里c=var_dump(scandir("/"));

直接输出根目录的位置,然后查看源代码,发现flag位置为flag.txt

CTFshow web(php命令执行 68-71)_第1张图片

知道flag在根目录下面的flag.txt直接访问就好了

CTFshow web(php命令执行 68-71)_第2张图片

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

                                                                        web69

CTFshow web(php命令执行 68-71)_第3张图片

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

上题payload没有禁用,直接白嫖!

                                                                        web70

CTFshow web(php命令执行 68-71)_第4张图片

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

上题payload没有禁用,直接白嫖!

                                                                        web71

CTFshow web(php命令执行 68-71)_第5张图片

首先拿到一串代码


代码审计:

  • 使用 ob_get_contents() 和 ob_end_clean() 函数获取并清除输出缓冲区中的内容。这是为了捕获执行命令后的结果,并将其传递给 preg_replace() 函数进行处理。

  • 使用 preg_replace("/[0-9]|[a-z]/i","?",$s) 将输出结果中的数字和小写字母替换为 ?,然后将结果进行输出。    

ps:害怕小白不懂,解释下。缓冲区(Buffer)是计算机系统中的一块内存区域,用于临时存储数据。它可以在数据传输之间起到缓冲和调节作用,以提高数据传输的效率或解决传输速度不匹配的问题。

先把上题payload看看能不能白嫖啊

c=include('/flag.txt');CTFshow web(php命令执行 68-71)_第6张图片

好小子,看来你是要上天啊!

根据代码审计结果,既然会把输出结果中的数字和小写字母替换为 ?

那不用缓冲区不就好了!

最后加一个exit();

CTFshow web(php命令执行 68-71)_第7张图片c=include('/flag.txt');exit();

真诚希望我的文章能够帮助大家,谢谢!过年写下这篇文章总觉得还得加上一句:

祝愿大家龙年吉祥!                          

你可能感兴趣的:(php,开发语言,CTFshow,web安全)