从楚慧杯“拯救芙莉莲”看 PureWaf

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

从楚慧杯“拯救芙莉莲”看PureWaf

开头先引个流 How to Use PureWaf ?

虽然是一道可以用 PureWaf 的题目,不过作为签到题它还是没有过滤的那么死

如果有其他的题目可以适用或者无法解出的欢迎投稿

源码:

<?php  
if (isset($_GET['spell'])) {  
echo'<div class="error-box">';  
echo'<h2>🔮 解开宝箱怪的封印</h2>';  
echo'<pre>';  
echo"芙芙: "这个宝箱怪有一个古老的封印,需要正确的魔法咒语才能解开..."n";  
echo"芙芙: "我记得封印的关键在根目录的某个文件里..."n";  
echo"芙芙: "但是宝箱怪的魔法屏障会拒绝某些危险的咒语!"n";  
echo"芙芙: "也许你可以用 Linux 命令来读取那个文件?"n";  

$spell = $_GET['spell'];  
echo"你的咒语: " . htmlspecialchars($spell) . "\n";  

$forbidden = array('system', 'exec', 'passthru', 'shell_exec', 'popen', 'proc_open');  
foreach ($forbidden as $bad) {  
if (stripos($spell, $bad) !== false) {  
die("⚠️ 检测到禁忌的黑魔法!n芙芙: "宝箱怪拒绝了这个咒语..."n</pre></div></body></html>");  
}  
}  

if (stripos($spell, 'flag') !== false) {  
die("⚠️ 宝箱怪的魔法屏障启动了!它不允许直接念出 'flag' 这个词!\n</pre></div></body></html>");  
}  

$blocked_commands = array('cat', 'tac', 'nl', 'more', 'less', 'head', 'tail', 'sort', 'uniq', 'strings', 'od', 'xxd', 'hexdump', 'grep', 'awk', 'sed', 'cut', 'rev', 'base64', 'env');  
foreach ($blocked_commands as $cmd) {  
if (stripos($spell, $cmd) !== false) {  
die("⚠️ 宝箱怪识破了你的咒语!命令 '$cmd' 已被封印!\n芙芙: \"这些常用的命令都被屏蔽了...得想想其他办法...\"\n</pre></div></body></html>");  
}  
}  

echo"施法中...\n";  
echo"━━━━━━━━━━━━━━━━━━━━\n";  

$result = shell_exec($spell);  

if ($result) {  
echo"✨ 封印解除了!宝箱怪消失了!nn";  
echo"【施法结果】:n";  
echo$result;  
echo"\n━━━━━━━━━━━━━━━━━━━━\n";  
echo"芙芙: \"太棒了!你成功救出了我!这是我珍藏的神秘卷轴,看看里面有什么~\"\n";  
} else {  
echo"❌ 咒语似乎没有效果...\n";  
echo"芙芙: \"也许需要调整一下咒语的内容?\"\n";  
}  

echo'</pre>';  
echo'</div>';  
}  
?>

可以提取出里面过滤的部分:

$forbidden = array('system', 'exec', 'passthru', 'shell_exec', 'popen', 'proc_open');  
foreach ($forbidden as $bad) {  
	if (stripos($spell, $bad) !== false) {  
		die("⚠️ 检测到禁忌的黑魔法!n芙芙: "宝箱怪拒绝了这个咒语..."n</pre></div></body></html>");  
	}  
}  

if (stripos($spell, 'flag') !== false) {  
	die("⚠️ 宝箱怪的魔法屏障启动了!它不允许直接念出 'flag' 这个词!\n</pre></div></body></html>");  
}  

$blocked_commands = array('cat', 'tac', 'nl', 'more', 'less', 'head', 'tail', 'sort', 'uniq', 'strings', 'od', 'xxd', 'hexdump', 'grep', 'awk', 'sed', 'cut', 'rev', 'base64', 'env');  
foreach ($blocked_commands as $cmd) {  
	if (stripos($spell, $cmd) !== false) {  
	die("⚠️ 宝箱怪识破了你的咒语!命令 '$cmd' 已被封印!\n芙芙: \"这些常用的命令都被屏蔽了...得想想其他办法...\"\n</pre></div></body></html>");  
	}  
}  

可以提取出来 Waf 就是:

from PureWaf import purewaf

w = purewaf(
    waf_words="system|exec|passthru|shell_exec|popen|proc_open|flag|cat|tac|nl|more|less|head|tail|sort|uniq|strings|od|xxd|hexdump|grep|awk|sed|cut|rev|base64|env"
)

print(w)

#[+] Shortest Root Payload : ls /
#[+] Shortest Flag Payload : vi /f???

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值