前言

这道题我做的也算比较久的一题,前前后后遇到许多的麻烦,最终也终于解了出来。就我这个萌新的角度来说,这个题给我的启示还是比较大的。以前对Web相关的知识进行了学习,但是题目并未完全涉及到,就导致我对于一些知识点的理解存在了偏差,甚至就忘记了这个知识点。这个题的知识点我以前学习的时候查过,也做过笔记,但是真正做题的时候却一点也想不起来,本来按照代码审计的思路可以找到的点也遗失了,这个题可谓让我成长了许多。

WP

打开题目之后会进行一些无用的操作,这里不再赘述。重点就是打开About发现Git。

看到Git基本就能猜到会有Git泄露,然后dirsearch验证果然有,然后githack。在这里,我遇到了我的第一个麻烦,我出现了以前没遇到过的情况:

下面出现了奇奇怪怪的东西而且一直在出现,我等了很久发现还是在这样运行,我又重试了几次还是不行。我上网查了很久然后一无所获,后来以为是Windows的问题,于是转战kali。当时的我刚安装kali还没有正式使用,然后在第一次使用kali的过程中又遇到了无数的奇奇怪怪的问题,这甚至让我忘记了我是来利用kali解这题的。后来到了晚上我再打开这题尝试的时候,我发现他虽然出现这个,但是过几分钟就好了。没错,他好了,我心里直接一句mmp。(如果有师傅也遇到了或者成功解决的可以教教我咋回事嘛)
既然githack使用成功了,就直接进入目录,如果除了.git没有其他文件那就git checkout-index -a就可以了。这时候可以发现有一个templates文件夹,打开后看到flag.php,打开后发现并没有flag,因此还要转回来,发现还有一个index.php文件,打开之后进行代码审计。
然后我本人一无所获。代码审计真的是硬伤,对于php的一些存在漏洞的知识点没有熟练掌握,在代码审计的时候确实很难发现漏洞。还有一点就是我在看assert函数的时候,出于本能的习惯,在PhP文档里只看了它是检查一个断言是否为 FALSE,并没有往下深究,这就导致我错过了这个点。

最重要的是如果内容是字符串,assert将这个字符串当作php代码直接执行,这是最关键的点。参考SQL注入和XSS类似的方法和思想,构造这样的代码:

?page=') or system("cat templates/flag.php");//

这样就可以成功实现让assert执行cat这个语句了。
不过这里我又遇到了我的第二个麻烦。我当时的语句不是这么写的,我写的是

?page=') or system("cat templates/flag.php");");//

多了的");是干什么的呢?因为我以为//后面会全部注释掉,这样assert后面的("并没有被闭合,因此需要把它闭合掉。但是我这样尝试之后发现是错的,让我思考了很久,后来终于知道了答案。

assert("strpos('templates/') or system("cat templates/flag.php");");//', '..') === false") or die("Detected hacking attempt!");

这个代码看似//把后面的全给注释掉了,但实际上,这行代码的//起作用之后是这样的:

assert("strpos('templates/') or system("cat templates/flag.php");");") or die("Detected hacking attempt!");

它实际只是把assert里面的那个字符串里面的//后面的语句给注释,因此我这样写就错了。这可能都不算一个知识点,但是我却并不是很清楚。真的需要多学习。
按照正确的方法输入page之后,按F12查看源码就可以得到flag。

攻防世界 Web高手进阶区 mfw相关推荐

  1. 攻防世界-web高手进阶区

    文章目录 攻防世界-web高手进阶区 1.baby_web 2.Training-WWW-Robots 3.Web_php_include (文件包含+伪协议) 1.方法 2.方法 4.ics-06( ...

  2. 攻防世界 web高手进阶区 9分题 favorite_number

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是favorite_number的writeup 解题过程 进入界面 简单的代码审计 首先是个判断,既要数组强等于,又要首元素不等 然 ...

  3. 攻防世界 web高手进阶区 10分题 weiphp

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的10分题 本文是weiphp的writeup 解题过程 进入界面 点击 进入一个登陆界面 没有注册 那肯定得找源码了 惯例源码+御剑 发现git泄 ...

  4. 攻防世界 web高手进阶区 8分题 Web_python_block_chain

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的8分题 本文是Web_python_block_chain的writeup 解题过程 这是个区块链题 这..裂开了啊 没搞过区块链 从零开始学习 ...

  5. 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth)WriteUp

    文章目录 解题部分 总结: 解题部分 题目来源 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth) 1.拿到题目以后,发现是一个index.php的页面,并且设备-没有显示 ...

  6. 攻防世界 web高手进阶区 9分题 bilibili

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是bilibili的writeup 解题过程 进来界面 这尼玛出题人是黑还是粉啊 笑死 看题目意思是买lv6 惯例源码+御剑 没发现什 ...

  7. 攻防世界 web高手进阶区 7分题Confusion1

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的7分题 本文是Confusion1的writeup 解题过程 进来的界面如下 (后来知道是php vs python的意思,也就是给提示跟pyth ...

  8. 攻防世界WEB高手进阶区warmup,NewsCenter,NaNNaNNaNNaN-Batman

    前言 作者简介:不知名白帽,网络安全学习者. 博客主页:https://blog.csdn.net/m0_63127854?type=blog 攻防世界专栏:https://blog.csdn.net ...

  9. XCTF 攻防世界 web 高手进阶区

    文章目录 ics-07 shrine( flask + jinja2 的 SSTI) easytornado(模板注入) upload(文件名注入) supersqli(堆叠注入) php_rce(T ...

  10. 攻防世界——web高手进阶区题解

    目录 1,cat (Django,cURL漏洞) 2,ics-05(XCTF 4th-CyberEarth)(文件包含  +  preg_replace函数漏洞) 3,ics-06(爆破id) 4,l ...

最新文章

  1. c语言printf输出格式顶格,c语言printf()输出格式[共6页].pdf
  2. win10开启wsl系统,让我们愉快的在windows上使用Linux
  3. python加载包出错_python导入Pmw包运行提示一下错误
  4. 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接(转载)
  5. 用于.NET Core的ORM
  6. java/j2ee中文问题终极解决之道
  7. java socketchannel api,SocketChannel API
  8. 【script】python字符串相似度匹配
  9. Css实现雷达扫描动画效果
  10. 影之刃服务器维护,影之刃无法联机到服务器怎么办 解决办法
  11. 955/965公司名单
  12. [转]项目实施过程中的风险控制
  13. linux内核编程:实现自己的系统调用
  14. Oracle 同义词总结
  15. web前端开发经验总结
  16. Matlab读取带有汉字的excel表
  17. 前端开发,用 css3 做一个求婚小动画
  18. 团队交流合作简单解决方案:TeamViewer远程控制会议演示 + HyperCam屏幕录制(免费)...
  19. Ubuntu18.04只显示集显,安装Nvida mx350显卡驱动 | 换源
  20. math-方程组和不等式组

热门文章

  1. c语言表示反正弦函数,[原创]正弦和反正弦函数
  2. 鸿蒙系统图标显示下划线,用鸿蒙OS在蜂鸣器上播放一曲《两只老虎》
  3. 计算机研究生个人简历,美国计算机研究生申请个人简历这样填比模板更出众!...
  4. php框架thinkphp教程,thinkPHP5.0框架安装教程详解
  5. JavaScript系列-闭包
  6. [ecshop 二次开发经验] ecshop 手机版本 购车流程 最后没有支付按钮 ,清理没有用的支付方式 68ecshop
  7. linux分配设备编号
  8. 阿里巴巴python开发面试题_2019阿里巴巴面试题集锦(有答案哦),收藏!
  9. python中eval什么意思_python中eval函数作用
  10. dns劫持如何完美修复?dns被劫持如何解决如何完美修复