---已搬运----BUUCTF:[HFCTF2020]BabyUpload sess_ file_exist()可 检测 目录和文件 。 sha256加密, PHP代码审计

本文介绍了HFCTF2020的BabyUpload挑战,涉及PHP上传、下载逻辑,重点在于session文件的利用。作者通过分析源码和尝试,发现可以通过特定的文件名和目录操作,结合PHP的file_exists()函数,实现对目录和文件的控制。在理解了PHP的几种解析引擎后,作者成功绕过限制,实现权限提升,获取flag。

一、自己做:

源码:里面有我调式时的代码,,大佬们可用题目给的源码,

<?php
error_reporting(0);
session_save_path("/var/babyctf/");
session_start();
$flag="flag{you_get_it_haha}";
#require_once "/flag";
#highlight_file(__FILE__);
if($_SESSION['username'] ==='admin')
{
   
   
    $filename='/var/babyctf/success.txt';
    if(file_exists($filename)){
   
   
        safe_delete($filename);
        die($flag);
    }
}
else{
   
   
    $_SESSION['username'] ='guest';
    echo "guest!"."\n"."<br>";
}

$direction = filter_input(INPUT_POST, 'direction');
$attr = filter_input(INPUT_POST, 'attr');
$dir_path = "/var/babyctf/".$attr;
if($attr==="private"){
   
      # attr 是 private的话,就将文件上传到 session[username] 目录下。 否则 就是 attr的名字的文件中,
    $dir_path .= "/".$_SESSION['username'];
    echo "now dir_path is ".$dir_path."11111111111\n"."<br>";
}
if($direction === "upload"){
   
   
    try{
   
   
        if(!is_uploaded_file($_FILES['up_file']['tmp_name']
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值