美文网首页CTF
[XCTF嘉年华体验赛](web)web2 assert函数

[XCTF嘉年华体验赛](web)web2 assert函数

作者: _Deen | 来源:发表于2017-06-21 21:31 被阅读62次

    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 ,这个函数可以用来写马过狗,但一句话过狗太简单了。

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

    继续学习~~

    相关文章

      网友评论

      • 王一航:还有这样的一句话 , $_GET[a]($_GET[b]) , 没有任何关键字

      本文标题:[XCTF嘉年华体验赛](web)web2 assert函数

      本文链接:https://www.haomeiwen.com/subject/llntcxtx.html