web:[HCTF 2018]WarmUp

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

题目

web:[HCTF 2018]WarmUp,BUUCTF-WEB,前端,网络安全,web安全

点进页面,页面只有一张滑稽脸,没有其他的提示信息

web:[HCTF 2018]WarmUp,BUUCTF-WEB,前端,网络安全,web安全

查看网页源代码,发现source.php,尝试访问一下

web:[HCTF 2018]WarmUp,BUUCTF-WEB,前端,网络安全,web安全

跳转至该页面,页面显示为一段php代码,需要进行代码审计

web:[HCTF 2018]WarmUp,BUUCTF-WEB,前端,网络安全,web安全

 <?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            //白名单验证
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }//isset是判断page是否为空。由于传进来的page为一个字符串且不为空,所以返回false

            if (in_array($page, $whitelist)) {
               //对输入进行判断,是否为白名单类的内容
                return true;
            }/*in_array的意思是判断page里是否包含白名单里的内容 例如source.php  hint.php。
              就是page=source.php或者hint.php才行.所以最后返回了false。*/


            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
       /*这里mb_substr 是个截断,返回0到mb_strpos之间的内容,而mb_strpos 则是查找第一次出现的位置,所以基本可以理解为获取page 两个?之间的字符串,也就是获取file两个?之间的字符串,放到url中就是http://ip/?file=ddd?中的file=ddd*/
            if (in_array($_page, $whitelist)) {
                return true;
            }
/*经过上面的截断代码,page=source.php  所以返回true ,文件可以得到包含,结束,下面的代码就不用在执行了*/

            $_page = urldecode($page);//进行url解码
            //输入的url会进行一次解码,通过这个函数进行再一次解码,所以对“?”要进行二次编码==》%253F(%25是%的url编码,进行过一次后为%3F,在进行一次解码后变为“?”)
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file']) //输入不能为空
        && is_string($_REQUEST['file'])//判断是否为string类型
        && emmm::checkFile($_REQUEST['file'])//调用emm类中的checkFile方法
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?> 

先访问hint.php看看有没有别的提示信息

web:[HCTF 2018]WarmUp,BUUCTF-WEB,前端,网络安全,web安全

根据提示信息,进行目录穿越可获得flag,这里flag写了四次,可能使用四个或五个../

构造payload

http://1f0787c3-39e3-43b6-9583-f8ecb87aae1c.node4.buuoj.cn:81/?file=hint.php%253F../../../../../ffffllllaaaagggg

得到flag

web:[HCTF 2018]WarmUp,BUUCTF-WEB,前端,网络安全,web安全

总结

mb_substr()函数返回字符串的一部分,substr()函数,只针对英文字符,如果要分割的中文文字则需要使用mb_substr()。

若start参数是负数且length小于或等于start,则length为0

如果在测试时没有匹配到指定符号,将返回字符串长度

代码审计参考链接:

[HCTF 2018]WarmUp_ke1nys的博客-CSDN博客

[HCTF 2018]WarmUp_浑水摸鱼的咸鱼的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-731607.html

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

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

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

相关文章

  • [BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论

    首先非常感谢大家阅读我的第一篇。本文章不仅仅是题解,一些细枝末节的小问题也欢迎大家一起解答。 小问题的形式如Qx:xxxxxxx? 欢迎发现小问题并讨论~~ N1nE是本人另外一个名字,目前主要学习pwn方向,此文章以及后续别的文章,如有不当欢迎补充与纠正。 题目来自bu

    2023年04月08日
    浏览(23)
  • 【web-ctf】ctf_BUUCTF_web(2)

    1. [RCTF2015]EasySQL 考点: 二次注入 报错注入 正则表达式查找 reverse函数 学到的知识点: 二次注入原理 二次注入的标志: (1)可以自行注册用户 (这是为了注册一些特殊的用户名到数据库中(比如会导致之后报错、修改其他用户的密码等)) (2)可以使用修改密码等 (二

    2024年02月06日
    浏览(35)
  • BUUCTF--Web篇详细wp

    CTF平台:https://buuoj.cn/ 使用万能密码登入即可。 flag{c8aeab4b-a566-4d7e-a039-cf6393c61d76} F12 查看源代码 发现是 PHP 代码审计(小猫挺可爱呢~) 传了一个变量 然后是 GET 请求 如果 cat=dog 就会输出 flag 构造 Payload:/?cat=dog flag{86e415ca-8d55-4868-afb3-ec58d239dbb7} 打开网页看到滑稽图 直接 F12

    2024年02月03日
    浏览(26)
  • BUUCTF NewStarCTF 2023 WEB题WP

    直接在URL处访问www.zip文件 将下载下来的www.zip文件解压即可得到flag 常见的文件泄露一般泄露的都是网站的备份文件,常见的备份的文件名通常为 wwwroot、www、子域名等,压缩包后缀通常为 zip、tar.gz 等 其他的也有配置文件的泄露。建议自己收集一个敏感文件的字典 很简单的

    2024年02月08日
    浏览(35)
  • BUUCTF题目Web部分wp(持续更新)

    如有权限,查询当前用户可以访问的所有表 字符串拼接,避免字符串被过滤。 利用字符串内联注入 利用终止式SQL注入 。也就是利用SQL语法中的注释。 利用 having 1=1 并观察报错来确定列名。因为sql语句中原本没有聚合函数,那么having 1=1就会爆出语法错误。这样语法解析时会

    2024年02月13日
    浏览(27)
  • [BUUCTF 2018]Online Tool

    打开题目就是源码,审一下。  escapeshellarg  — 把字符串转码为可以在 shell 命令里使用的参数 功能  :escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,shell 函数包含 exec(), system() 执行运

    2024年02月02日
    浏览(29)
  • BUUCTF-练习场-WEB-第一部分(8道)

    payload: 1\\\' or 1=1# \\\'是闭合前面的查询语句,or 1=1恒成立,可以使用or句子绕过判断,#用于注释,注释后面的内容不再执行,所以该sql命令会返回表内所有内容,其实就是实现一个闭合查询,绕过判断,返回内容 F12查看源代码,发现注释中有一个source.php文件名称 访问这个文件

    2024年02月06日
    浏览(29)
  • 【BUUCTF N1BOOK】[第一章 web入门] 通关

    目录 前言 [第一章 web入门]常见的搜集 robots.txt有flag1 index.php~有flag2 .index.php.swp有flag3 [第一章 web入门]SQL注入-1 sqlmap一把梭 [第一章 web入门]afr_1 php伪协议 [第一章 web入门]afr_2 目录穿越,文件读取 [第一章 web入门]粗心的小李 1.下载GitHack 2..git/泄漏 [第一章 web入门]afr_3 N1BOOK 是

    2024年02月20日
    浏览(27)
  • BUUCTF Misc [SUCTF2018]single dog & 我吃三明治 & sqltest & [SWPU2019]你有没有好好看网课?

    目录 [SUCTF2018]single dog 我吃三明治 sqltest [SWPU2019]你有没有好好看网课? 下载文件 使用kali的binwalk工具分析 进行文件分离 解压其中的压缩包,得到1.txt 看内容应该是js加密后的结果,复制到AAEncode在线解密网站 得到flag             flag{happy double eleven}  下载文件 使用010 eitor打

    2023年04月08日
    浏览(34)
  • Web前端阿里等大厂面试题汇总,Web核心技术之JSP(过时技术),前端音频框架

    jstl jstl 1.2 taglibs standard 1.1.2 org.apache.tomcat.maven tomcat7-maven-plugin 2.2 8.1.2 创建包 创建不同的包结构,用来存储不同的类。包结构如下 8.1.3 创建表 – 删除tb_brand表 drop table if exists tb_brand; – 创建tb_brand表 create table tb_brand ( – id 主键 id int primary key auto_increment, – 品牌名称 brand_n

    2024年04月16日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包