zoukankan      html  css  js  c++  java
  • [XCTF嘉年华体验赛](web)web2 assert函数

    0x00 题目分析


    浏览一遍页面,在about页面,获得如下信息

    访问 .git/ ,页面存在。

    使用githack扒下来。得到源码,进行代码审计。

    分析得到:

    1.flag在flag页面,要看源码才能看到。

    2. 参数过滤了 ../ 也就是限定了只能在本目录

    3. exists函数 对文件的存在进行判定。

    0X01 解题思路


    理清思路,要看源码,有哪几种方法。

    1.系统命令执行,cat 等函数

    2.函数执行,show_source 等

    3.将文件打包 ,下载下来。

    这里最有可能的就是函数执行了,虽然下面有一个  “require_once” 但是由于上面两个语句的限制,不存在远程包含。

    将代码扔进软件自动审计。

    很显然,关键就在assert函数,网上查找相关资料。

    函数介绍参考以下页面:

    https://www.douban.com/note/217557007/

    对这个函数的理解就是,这个函数会执行括号里面的语句,括号里面的句子的布尔真值不是true时候,就会提示warning。

    下面是对这个函数的测试。

    当为true的时候就没有提示。

    所以,这一题。

    注意闭合前后单引号,括号等。可得参数应为 

    page=1' ) == (show_source('templates/flag.php')) ;//

    网上找到一种这样的:

    page=' and  die(highlight_file('templates/flag.php')) or '

    这种写法的是利用第二个assert,最后的句子为:

    执行了三个语句,里面那个 “or” 也可替换为“and”

    0x02 小结


    神奇的php函数:assert ,这个函数可以用来写马过狗,但一句话过狗太简单了。

    有什么问题不先问问神奇的海螺呢?

    继续学习~~

  • 相关阅读:
    AngularJS中service,factory,provider的区别
    AngularJs数据绑定原理
    H5项目常见问题及注意事项
    本地存储-localStroage/sessionStorage存储
    微信小程序 获取OpenId
    Nginx 常用命令
    Redis 分布式锁 解决集群环境下多次定时任务执行
    Spring Boot 动态修改 Scheduled (系统启动默认执行,动态修改)
    SpringBoot 部署war包
    Docker + Tomcat 实现 Springboot 项目增量升级
  • 原文地址:https://www.cnblogs.com/deen-/p/7061804.html
Copyright © 2011-2022 走看看