2020第四届强网杯部分WP
发布日期:2021-07-01 00:02:00 浏览次数:2 分类:技术文章

本文共 3898 字,大约阅读时间需要 12 分钟。

题目序号 主动

操作内容:

进入网址,阅读源码,发现是个命令执行的题。

在这里插入图片描述

先尝试ls命令列出所有文件,发现存在flag.php文件,猜测flag在该文件中。

在这里插入图片描述

然后尝试读取flag.php文件,但是正则匹配了flag关键词,需要使用通配符绕过,如:fla?.php,但是尝试cat、tail、head、more文件读取命令均无效,最后使用tac命令拿到flag。

在这里插入图片描述

flag值:

flag{I_like_qwb_web}

题目序号 Funhash

操作内容:

进入网址,开始阅读源码,发现需要绕过三个不同的限制方可拿到flag。

在这里插入图片描述

先看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如下:

在这里插入图片描述

来到level3,咋一看是个sql注入,但是hash4用md5加密成二进制了,这个比较巧妙,要注入他需要md5加密后带有’or’ 的字符串,于是从网上找到符合条件的字符串ffifdyop,构造payload如下:

在这里插入图片描述

flag值:

flag{y0u_w1ll_l1ke_h4sh}

题目序号 IPFS

操作内容:

1、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文件:
在这里插入图片描述

2、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值的开头。
3、根据图片,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”

4、计算md5(hash1+hash2),随便找了个网站计算md5,得flag{35fb9b3fe44919974a02c26f34369b8e}

flag值:

flag{35fb9b3fe44919974a02c26f34369b8e}

题目序号 bank

操作内容:

1、通过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)

2、进去以后观察了一会,是一个交易系统,每次进去默认只有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}

转载地址:https://lynnlovemin.blog.csdn.net/article/details/108209365 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:古典密码学原理和Base64算法原理
下一篇:使用Wireshark工具分析网络协议

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月30日 18时55分36秒