2020第四届强网杯部分WP

题目序号 主动

操做内容:

进入网址,阅读源码,发现是个命令执行的题。
在这里插入图片描述
php

先尝试ls命令列出全部文件,发现存在flag.php文件,猜想flag在该文件中。
在这里插入图片描述
java

而后尝试读取flag.php文件,可是正则匹配了flag关键词,须要使用通配符绕过,如:fla?.php,可是尝试cat、tail、head、more文件读取命令均无效,最后使用tac命令拿到flag。
在这里插入图片描述
web

flag值:

flag{I_like_qwb_web}算法

题目序号 Funhash

操做内容:

进入网址,开始阅读源码,发现须要绕过三个不一样的限制方可拿到flag。
在这里插入图片描述
sql

先看level1,分析可知须要明文和md4加密后的密文要匹配才行,好在他使用了非精确匹符号!=,由于能够考虑”0e”,即明文为0e开头,密文也为0e开头,且0e后面全是数字,写脚本跑出了一个符号条件的字符串0e251288019。代码以下:数组

public static void main(String[] args) {
   for(int i = 0;;i++){
       String str = Md4.getMD4ofStr("0e"+i);
       if(str.startsWith("0e")){
           char chars[] = str.toCharArray();
           boolean isNumber = true;
           for(int j = 2;j < chars.length;j++){
               int s = (int)chars[j];
               if(s < 48 || s > 57){
                   isNumber = false;
                   break;
               }
           }
           if(isNumber){
               System.out.println(i+"\t"+str);
               break;
           }
       }
   }
}

在这里插入图片描述

因而构造payload以下:
在这里插入图片描述
网络

继续绕过level2,发现须要找到不一样明文,可是md5值相同的,一开始想到了md5碰撞,后来一想,php参数名传入数组的话,任意传值,md5都会匹配,因而构造payload以下:
在这里插入图片描述
ide

来到level3,咋一看是个sql注入,可是hash4用md5加密成二进制了,这个比较巧妙,要注入他须要md5加密后带有’or’ 的字符串,因而从网上找到符合条件的字符串ffifdyop,构造payload以下:
在这里插入图片描述
网站

flag值:

flag{y0u_w1ll_l1ke_h4sh}编码

题目序号 IPFS

操做内容:

一、pic1是分6块存储,经过题目给出的6个hash值能够直接在IPFS网络中下载这6个分块文件。我是在https://ipfs.io/ipfs/网站上下载的,如:
https://ipfs.io/ipfs/QmZkF524d8HWfF8k2yLrZwFz9PtaYgCwy3UqJP5Ahk5aXH
下载后获得6个文件,其中1个文件带有后缀【.jfif】,应该是第一个分块。6个文件中有5个文件大小一致,为26624byte,另外1个文件小一些,应该是最后一个分块。肯定了头尾,其他4个分块为中间分块,只有24种组合,我直接用拼接的,拼错了图片会有明显的不正常感受。最后获得一个完整的pic1.jpg文件:
在这里插入图片描述


二、pic2分1个块存储,题目给了pic2文件的sha256sum,使用文件的hash值添加0x1220,而后使用base58进行编码获得IPFS-Multihash,这个值也是题目说的忘记了的那个hash2

s = ’1220659c2a2c3ed5e50f848135eea4d3ead3fa2607e2102ae73fafe8f82378ce1d1e'
hash2 = b58encode_int(int(s, 16))

可知:
hash2= “QmVBHzwuchpfHLxEqNrBb3492E73DHE99yFCxx1UYcJ6R3”
根据hash2下载文件pic2.jpg:
在这里插入图片描述


multihash是一种自识别hash (Self identifying hashes)
multihash 多重哈希 遵循TLV 模式(type-length-value)。它其实就是一个字符串,由三部分组成:HASH算法编码、HASH值的长度(字节数)、HASH 值。
SHA2-256的编码为0x12,其HASH摘要长度为32字节(十六进制数为0x20)。把1220加到前面所得HASH值的开头。
三、根据图片,flag=flag{md5(hash1+hash2)},还须要知道hash1。这里遇到个坑,开始一直向把这个值经过pic1.jpg算出来,可是是分块存储,一直没找到根节点的hash生成算法。最后换了个方法,把pic1.jpg这个文件按照26624的分块再往网上上传一次。命令以下:


ipfs add -s size-26624 pic1.jpg

命令返回了一个hash值:
QmYjQSMMux72UH4d6HX7tKVFaP27UzC65cRchbVAsh96Q7
查看一下这个节点下的文件:

ipfs ls -v QmYjQSMMux72UH4d6HX7tKVFaP27UzC65cRchbVAsh96Q7

返回了的6个节点跟题目给出的hash值一致:
在这里插入图片描述

hash1= “QmYjQSMMux72UH4d6HX7tKVFaP27UzC65cRchbVAsh96Q7”
四、计算md5(hash1+hash2),随便找了个网站计算md5,得flag{35fb9b3fe44919974a02c26f34369b8e}

flag值:

flag{35fb9b3fe44919974a02c26f34369b8e}

题目序号 bank

操做内容:

一、经过nc链接题目,是一个sha256的爆破,代码以下:

dic="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
result='11341d04ffb54c67907472b094e4814bd955dd4f223a17939d6d61683e9c5ed3'
known="by1gCDw8wxb1gRoZV"
teamtoken="icq8e64a8ad90e4a5ae3ce7f7ce89fd4"
for i in dic:
    for j in dic:
        for k in dic:
            key=i+j+k
            s=key + known
            h=hashlib.sha256(s.encode('ascii')).hexdigest()
            if h==result:
                print(key)

二、进去之后观察了一会,是一个交易系统,每次进去默认只有10块钱,获取flag要1000块,开始觉得只须要爆破100次sha256就能够了,可是事实是没有这么简单。每次链接都是一个独立的进程,交易信息和资金信息断开后就重置了,没法经过屡次爆破而后交易给一个用户的方式来增长资金。继续看到了一个提示,交易后会生成一个字符串,根据提示,这个字符串应该是根据交易的双方和金额组成。由AES算法来生成3个字符串,每一个字符串32byte,而后作拼接生成一个相似交易单号的96byte字符串。系统中能够查看一些别人的交易单号,本身交易以后也会生成交易单号,系统中还有一个是提交交易单号的功能,应该是提交了以后会根据提交的交易单号来更新金钱数据。根据这些,思路是经过已知交易单号和本身的交易单号,破解AES的key,而后使用key伪造交易单号,因而开始入坑……泪。开始着手研究AES的已知明文攻击、选择明文攻击,搞半天无果,准备放弃。喝口水忽然灵光闪现,本身交易后会生成交易单号,其中的的recevier字符串原本就是经过key加密的,系统中能查到10笔交易单号,把中间的recevier字符串更换成本身的就好了。没写代码,作了一个excel,快速生成10笔伪造交易单,而后提交给系统。
在这里插入图片描述

最后获取到1000+的资金,使用get flag得到最终flag。
好烦,没记flag,还要作一次……
在这里插入图片描述

如该题使用本身编写的脚本代码请详细写出,不容许截图

flag值:

flag{3a9f633497c3cf3ac869c18ef416ad9c}

题目序号 upload

操做内容:

文件下载下来用wireshark分析,比较简单,能够看到以下信息:
在这里插入图片描述
提示很明显,使用steghide加密,而且使用了密码。在数据包里面找到了一个jpg文件,很容易分离出图片,继续找密码,没找到,数据包比较简单,应该不会漏。盯着代码看了一会,总以为这个a good password是在嘲讽我,因而使用密码123456解密steghide.jpg,获得flag.txt文件。
在这里插入图片描述


flag就在文件中。

flag值:

flag{te11_me_y0u_like_it}

相关文章
相关标签/搜索