攻防世界MISC(2)

3.心仪的公司

先下载附件,是一个wireshark流量包,名字有webshell字样,直接使用Wireshark进行打开查看,并进行锁定HTTP流:http contains “shell”

锁定最后一条,直接追踪HTTP流,发现flag

15.simple_transfer

内容是个pcap文件,果断用wireshark打开,题目提示,文件里有flag,找到它。那么说明数据流中包含flag,我们使用wireshark中的分组字节流查找flag关键字,如图:

说明文件中有隐藏pdf,因此自然想到了文件分离,用binwalk和dd或者foremost

17.安恒9月赛-Ditf

首先拿到图片,使用binwalk工具检查发现存在文件包含,foremost拆解后打开rar压缩包有一个pcapng,且rar是加密压缩包

猜测密码在图片里,使用010Editor打开。发现crc报错,猜测可能是图片隐写,修改高度后得到一段字符串:StRe1izia

即压缩包密码,成功解开压缩包。打开pcapng文件后搜索ctf等关键词无果;当尝试搜索字符串png时发现kiss.png,右键打开追踪http流,发现神秘字符串:

base64解码得到
flag值即为:flag{Oz_4nd_Hir0_lov3_For3ver}

19.m0_01-太湖杯(USB流量分析)

用wireshark打开文件,一看protocol协议都是USB,那首先可以考虑到USB的流量数据分析,USB流量数据都在Leftover Capture Data中, USB流量数据常见的有两个:
1.鼠标流量数据
鼠标流量数据长度为4个字节:

第一个字节,代表按键:
当取0×00时,代表没有按键,取0×01时,代表按左键,取0×02时,代表当前按键为右键

第二个字节,可看作为signed byte类型,其最高位为符号位:
当值为正时,代表鼠标右移像素位;值为负时,代表鼠标左移像素位。

第三个字节,代表垂直上下移动的偏移:
当值为正时,代表鼠标上移像素位;值为负时,代表鼠标下移像素位。

2.键盘流量数据:
键盘流量数据为8个字节:

键盘流量数据一般来说仅有1,3字节有信息,如过说出现其他字节的非0x00那么可能是多个键一起按
下:
第一个字节:代表按键(00时,代表没有按键;不论
02或者20做题时统一当shift键)

第三个字节:代表键盘敲击时具体字母。
其它字节暂时不做考虑。

这部分数据都是16进制的,有八个字节,那么可判断出该部分数据为键盘流量数据。先用以下指令提取出来

tshark -r exa.pcap -T fields -e usb.capdata > 1.txt
tshark -r exa.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > 1.txt #提取并去除空行

根据USB协议中HID设备描述符以及键盘按键值对应编码表,编写脚本得到

import os
import re
normalKeys = {"04": "a", "05": "b", "06": "c", "07": "d", "08": "e", "09": "f", "0a": "g", "0b": "h", "0c": "i",
              "0d": "j", "0e": "k", "0f": "l", "10": "m", "11": "n", "12": "o", "13": "p", "14": "q", "15": "r",
              "16": "s", "17": "t", "18": "u", "19": "v", "1a": "w", "1b": "x", "1c": "y", "1d": "z", "1e": "1",
              "1f": "2", "20": "3", "21": "4", "22": "5", "23": "6", "24": "7", "25": "8", "26": "9", "27": "0",
              "28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "-", "2e": "=", "2f": "[",
              "30": "]", "31": "\\", "32": "<NON>", "33": ";", "34": "'", "35": "<GA>", "36": ",", "37": ".", "38": "/",
              "39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>",
              "40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}
shiftKeys = {"04": "A", "05": "B", "06": "C", "07": "D", "08": "E", "09": "F", "0a": "G", "0b": "H", "0c": "I",
             "0d": "J", "0e": "K", "0f": "L", "10": "M", "11": "N", "12": "O", "13": "P", "14": "Q", "15": "R",
             "16": "S", "17": "T", "18": "U", "19": "V", "1a": "W", "1b": "X", "1c": "Y", "1d": "Z", "1e": "!",
             "1f": "@", "20": "#", "21": "$", "22": "%", "23": "^", "24": "&", "25": "*", "26": "(", "27": ")",
             "28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "_", "2e": "+", "2f": "{",
             "30": "}", "31": "|", "32": "<NON>", "33": "\"", "34": ":", "35": "<GA>", "36": "<", "37": ">", "38": "?",
             "39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>",
             "40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}
output = []
file = r'2.txt'
with open(file, 'r') as file:
    contents = file.read().split()
    # print(contents)
    for cont in contents:
        if len(cont) == 16:
            # 两个字符 '0000100000000000' => ['00', '00', '10', '00', '00', '00', '00', '00']
            a = re.findall('.{2}', cont)
            # print(":".join(a))
            cont = ":".join(a)  # 00:00:10:00:00:00:00:00
            try:
                # 去除不合条件的
                if cont[0] != '0' or (cont[1] != '0' and cont[1] != '2') or cont[3] != '0' or cont[4] != '0' or cont[9] != '0' or cont[10] != '0' or cont[12] != '0' or cont[13] != '0' or cont[15] != '0' or cont[16] != '0' or cont[18] != '0' or cont[19] != '0' or cont[21] != '0' or cont[22] != '0' or cont[6:8] == "00":
                    continue
                if cont[6:8] in normalKeys.keys():
                    # 没有按 Shift 键
                    if cont[1] != '2':
                        output += normalKeys[cont[6:8]]
                        # print(cont, output)
                    # 按了 Shift 键
                    else:
                        output += shiftKeys[cont[6:8]]
                else:
                    output += "äă"  # 随便
            except:
                pass
print("结果:", output)
flag = ""
for i in range(0, len(output)):
    flag += output[i][0]
print(flag)
flag = re.sub("<CAP>(.*?)<CAP>", lambda matchStr: matchStr.group(1).upper(), flag)
# 循环去除 比如  aaaa<DEL><DEL>这种情况  => aa
while re.findall(r".<DEL>", flag, re.DOTALL):
    flag = re.sub(r".<DEL>", "", flag, re.DOTALL)
print(flag)

这是云影密码,用以下脚本

# -- coding: utf-8 --
def decode(cipher):
    charList = [chr(i) for i in range(ord('A'),ord('Z')+1)]
    ret = []
    plaintext = [i for i in cipher.split('0')]
    for i in plaintext:
        tmp = 0
        for j in range(len(i)):
            tmp += int(i[j])
        ret.append(charList[tmp-1])
    return ''.join(ret).lower()
c = decode('884080810882108108821042084010421')
print (c)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇