取证

volatility

爱吃培根的你

第二套密码表 先用脚本把小写转为A 大写转为B

1
2
3
4
5
6
7
8
9
10
11
12
13
s="bacoN is one of aMerICa'S sWEethEartS. it's A dARlinG, SuCCulEnt fOoD tHAt PaIRs FlawLE"
s=s.replace(' ','')
s=s.replace('\'','')
s=s.replace('.','')
s=s.replace(',','')
print(s)
s2=''
for i in s:
if i >= 'A' and i<= 'Z':
s2 += 'B'
if i >= 'a' and i<='z':
s2 += 'A'
print(s2)

再用ctfcrack 跑一下跑一下就出来了

熟悉的声音

1
XYYY YXXX XYXX XXY XYY X XYY YX YYXX

看着像摩斯

X->0

Y->1

1
2
['.---', '-...', '.-..', '..-', '.--', '.', '.--', '-.', '--..']
JBLUWEWNZ

本来以为这个就是答案 提交发现不对

凯撒移位一下

1
PHRACKCTF

回旋13踢

1
synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}

很明显rot13

解码一下

1
flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}

小苹果

winhex binwalk 频谱 波形看完了 都没找到线索 看了wp 使用SilentEye进行decode

用silentEye打开 decode一下 直接就出来了

base64

看到后面有3个=== 应该不是base64 base32解码一下 得到一串16进制 16进制转字符

1
2
3
4
5
6
>>> import base64
>>> base64.b32decode('GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI===')
b'504354467b4a7573745f743373745f683476335f66346e7d'
>>> import binascii
>>> binascii.a2b_hex('504354467b4a7573745f743373745f683476335f66346e7d')
b'PCTF{Just_t3st_h4v3_f4n}'

加密的文档

解压提示需要密码 winhex打开看到开头全局加密位 没有加密 应该是伪加密 搜一下504b0102 把后面的09改为00

解压得到一个word文件 调了一下 隐藏字体 还有字体颜色 图片的位置 没有反应 改后缀为zip 在media目录下 看到了两张图片 拿到flag

shellcode

https://github.com/inquisb/shellcodeexec

window跑一下就好了 linux貌似不行

1
windows>shellcodeexec.x32.exe PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIYIhkmKzyCDq4l4FQyBlrRWEahI1tLKT16Pnk1ftLnkPvwlnkW6fhNkan5pNkgF6XPOR8T5HsCivaN19okQSPlKRLvD6DNk3uelNkpTthRXuQ9znk2jEHLK1Ja0FaXkhcTtBink4tlKUQhnvQYotqo0ylnLMTO0SDEWZahOtMwqhG8kXteksLwTdh1e8aLKsja4uQ8kavLKdLrklK0ZeL7qjKLKUTLKuQM8k9bdvDeL1qiSnR5XVIXTOyjENikrphNnrnVnhlBrzHooKOYoyok93u7tOKCNyHzBBSnguLgTcbyxlNKOYoYoMYaUTHphRL2LupQQ0htsFRTn541x3E2Se5T26PyKK8QLTddJlIZFBvyoSeUTLIkrv0oKy8ORpMmlk7Gl6DBrm8SoyoioyoaxrOqh0XwP1xu1Qw1upBbHrmrED3T34qiKOxQLTdEZOyZCaxQmRxgPUp0hpnPn4srRe8BDSo2PT7axqOCWROpophSYpnSo04u83K72Peu70hBpCsqDpF4qHIMXpLQ429k98aEaJr1BF3Ca3bIozp01IPf0Yof5GxAAr

手贱的A君

直接去解密一下 报错解密格式不正确

看一下长度

1
2
>>> len('d78b6f302l25cdc811adfe8d4e7c9fd34')
33

竟然是33个 仔细看一下 这里混进了一个l 长的和1太像,把l删掉

1
d78b6f30225cdc811adfe8d4e7c9fd34

解密hack提交

stegsolve看了一下 没问题 看下exif有个PCTF

foremost分离一下 拿到flag

R.I.P Transmission

下载拿到一个rip文件 看到ELF文件头 是Linux的一个可执行文件,运行了 一下 提示权限不够 咦 我已经是root用户了,怎么权限还不够 后来想到文件的权限

chmod 777 rip 一下

在运行一下 出现了一大堆的01

看wp吧

foremost分离一下 爆破密码 这和我的思路完全偏了

以后做misc 一定要先用binwalk foremost分离一下

ARCHPR 字典爆破拿到密码bunny

Intercepted Conversations Pt.1

流量包 都是usb协议 应该是类似键盘记录和鼠标记录的东西

https://www.cnblogs.com/ECJTUACM-873284962/p/9473808.html

USB协议的数据部分在Leftover Capture Data域之中,在Mac和Linux下可以用tshark命令可以将 leftover capture data单独提取出来,命令如下:

1
tshark -r example.pcap -T fields -e usb.capdata //如果想导入usbdata.txt文件中,后面加上参数:>usbdata.txt

windows下安装wireshark后 安装目录下有一个tshark.exe 定位到这个目录下 打开cmd

1
tshark.exe -r example.pcap -T fields -e usb.capdata //如果想导入usbdata.txt文件中,后面加上参数:>usbdata.txt

image

这里我们只关注USB流量中的键盘流量和鼠标流量。

键盘数据包的数据长度为8个字节,击键信息集中在第3个字节,每次key stroke都会产生一个keyboard event usb packet。第一个字节以02 20开头则表示大写

鼠标数据包的数据长度为4个字节,第一个字节代表按键,当取0x00时,代表没有按键、为0x01时,代表按左键,为0x02时,代表当前按键为右键。第二个字节可以看成是一个signed byte类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少像素,为负时,代表水平左移多少像素。第三个字节与第二字节类似,代表垂直上下移动的偏移。

1
2
3
4
5
6
7
8
9
10
[email protected]:~# tshark -r ./intercept.pcapng -T fields -e usb.capdata -Y usb.capdata 2>/dev/null
00:10
08:00
00
00
00:00:00:00:00:00:00:00
00:00:00:00:00:00:00:00
20:00:00:00:00:00:00:00
20:00:0a:00:00:00:00:00
20:00:00:00:00:00:00:00

前6行没用 用tail命令去掉

1
2
3
4
5
6
7
[email protected]:~# tshark -r ./intercept.pcapng -T fields -e usb.capdata -Y usb.capdata 2>/dev/null | tail -n +6
00:00:00:00:00:00:00:00
20:00:00:00:00:00:00:00
20:00:0a:00:00:00:00:00
20:00:00:00:00:00:00:00
00:00:00:00:00:00:00:00
00:00:0c:00:00:00:00:00

转换一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DataFileName = "1.txt"
presses = []
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>"}

with open(DataFileName, "r") as f:
for line in f:
print line
presses.append(line[0:-1])
# handle
result = ""
for press in presses:
Bytes = press.split(":")
if Bytes[0] == "00":
if Bytes[2] != "00":
result += normalKeys[Bytes[2]]
elif Bytes[0] == "20" or Bytes[0] =="02": # shift key is pressed.
if Bytes[2] != "00":
result += shiftKeys[Bytes[2]]
else:
print "[-] Unknow Key : %s" % (Bytes[0])
print "[+] Found : %s" % (result)

最后把qwerty键盘 转成 Dvoark键盘

Intercepted Conversations Pt.2

看IRC协议 发现里面有个 pyc 追踪一下tcp流,看到一串python代码 但是又不完整 可能就是pyc文件了 导出原始数据,保存为1.pyc 用file命令看一下 果然是pyc文件 反编译一下 拿到源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uncompyle6 1.pyc
# uncompyle6 version 3.4.0
# Python bytecode 3.5 (3350)
# Decompiled from: Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)]
# Embedded file name: encode.py
# Compiled at: 2016-08-08 06:10:09
# Size of source mod 2**32: 936 bytes
import random, base64
P = [
27, 35, 50, 11, 8, 20, 44, 30, 6, 1, 5, 2, 33, 16, 36, 64, 3, 61, 54, 25, 12, 21, 26, 10, 57, 53, 38, 56, 58, 37, 43,
17, 42, 47, 4, 14, 7, 46, 34, 19, 23, 40, 63, 18, 45, 60, 13, 15, 22, 9, 62, 51, 32, 55, 29, 24, 41, 39, 49, 52, 48, 28, 31, 59]
S = [68, 172, 225, 210, 148, 172, 72, 38, 208, 227, 0, 240, 193, 67, 122, 108, 252, 57, 174, 197, 83, 236, 16, 226, 133, 94, 104, 228, 135, 251, 150, 52, 85, 56, 174, 105, 215, 251, 111, 77, 44, 116, 128, 196, 43, 210, 214, 203, 109, 65, 157, 222, 93, 74, 209, 50, 11, 172, 247, 111, 80, 143, 70, 89]
inp = input()
inp += ''.join(chr(random.randint(0, 47)) for _ in range(64 - len(inp) % 64))
ans = ['' for i in range(len(inp))]
for j in range(0, len(inp), 64):
for i in range(64):
ans[j + P[i] - 1] = chr((ord(inp[(j + i)]) + S[i]) % 256)

ans = ''.join(ans)
print(base64.b64encode(ans.encode('utf8')).decode('utf8'))

Corrupt Transmission

修改一下图片头 就好了

Audio Problems

au打开 调一下频谱图

段子

在程序员网站上经常看到一个段子(满满的都是泪啊)

手持两把锟斤拷,口中疾呼烫烫烫。

解释一下为什么会是这两个东西不是别的= =:

棍斤拷乱码:

源于GBK字符集和Unicode字符集之间的转换问题。Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。那么U+FFFD的UTF-8编码出来,恰好是 ‘\xef\xbf\xbd’。如果这个’\xef\xbf\xbd’,重复多次,例如 ‘\xef\xbf\xbd\xef\xbf\xbd’,然后放到GBK/CP936/GB2312/GB18030的环境中显示的话,一个汉字2个字节,最终的结果就是:锟斤拷——锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。

烫烫烫乱码:

在windows平台下,ms的编译器(也就是vc带的那个)在 Debug 模式下,会把未初始化的栈内存全部填成 0xcc,用字符串来看就是”烫烫烫烫烫烫烫”,未初始化的堆内存全部填成0xcd,字符串看就是“屯屯屯屯屯屯屯屯”。也就是说出现了烫烫烫,赶紧检查初始化吧。。。

misc3-枯竭

解压 提示要密码 winhex看了一下 是不是伪加密 然后就掉进了 该文件头的坑,最后看了wp 直接爆破就行

题目哪里有5个? 可能是5位密码 字典爆破一下 12345

福尔摩斯

·-· ·-· ·-· ·-· ·-· ·-· · 需要变换一下 莫斯密码一般是- 在上 .在下

1
.-. .-. .-. .-. .-. .-. .

.-. ==> R

. ==> E

纵横四海

1
2
3
4
5
6
7
8
9
import os
path = 'tiaoxiwoya'
filename_l=os.listdir(path)
#print(filename_l)
r=''
for name in filename_l:
with open(name,'r') as f:
r += f.read().replace('\n','')
print(r)

Misc 1

winhex打开 flag在最下边

Misc 2

试了 lsb jphide winhex binwalk 都没用 最后看了wp 猪圈密码

Misc 3

keyboard

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1 2 3 4 5 6 7 8 9 0 

Q W E R T Y U I O P

A S D F G H J K L

Z X C V B N M



根据上表可以得出,Q是第1 下面的第一个,A是第2下面的第一个……以此类推,每一个字母都会有其对应的数字。

例如:

A 21

B 35

第一个数字代表横向(X坐标)的位置,第二个数字代表纵向(Y坐标)的位置。



但是也有这种表示 (坐标对换)

例如:

A 12

B 53

C 33

Bubble

Bubble Babble Encoding加密 python直接解密

pip install bubble

1
2
3
4
5
>>> from bubblepy import BubbleBabble
>>> cc='xinik-samak-luvag-hutaf-fysil-notok-mepek-vanyh-zipef-hilok-detok-damif-cusol-fezyx'
>>> bb=BubbleBabble()
>>> bb.decode(cc)
b'flag{Ev3ry7hing_i5_bubb13s}'

要想会,先学会

看一下icmp协议 数据包的长度 一直在变

把长度提取 出来,可能是ascii的偏移,

1
2
3
4
5
6
a=[144,150,139,145,165,120,139,91,160,93,167,70]
for j in range(-50,50):
flag=''
for i in a:
flag+=chr(i+j)
print(flag)

登机牌

这道题还是学到了点东西的

根据题目给的图片 有这几个地方异常 二维码 条形码

二维码用ps 找一个二维码定位符 修一下,扫一下 拿到一个Binwalk

binwalk foremost 分析了一下 没拿到东西

可以去16进制查看器里 搜一下常见的文件头 文件头可能被修改,导致binwalk不能分离出文件

直接搜一下rar 然后把文件头由52 41 52 改成 52 61 72 foremost分离一下

拿到一个加了密的rar压缩文件 压缩包里面还有个ticket.png图片 试一下明文攻击,但是两张图片的crc32不一样 没法明文 后来看了wp rar压缩使用AES算法 很难明文

去试试条形码 反相一下 画图就可以, 截图的时候,条形码一定要完整

https://online-barcode-reader.inliteresearch.com/

PDF417解密 拿到key

归纳

no.1 分离文件,有时候需要改文件头 才能被工具检测出来,越来越需要手工了,不能依赖工具

no.2 PDF41条形码 知道为啥flag要用 pdf格式的啦

流量分析

winhex打开secret.log 里面有一串16进制 开头是5261 rar的文件头 复制出来 解压需要密码

去看流量包 有一串url编码的jsfuck console一下 拿到解压密码

第三届上海市大学生网络安全大赛流量分析

过滤一下ftp-data 有有两个flag.zip压缩包 还有一个key.log 全部导出

key.log应该就是TLS的解密文件,导入解密

过滤http 发现有一个zip文件 导出http数据流

image

解压找到一个mp3文件

属性 里面看到163key 应该是网易云的 后面的那一串base64解码后 乱码

image

原版只有2分多钟 这个有3分钟

听一下 最后有一段杂音,au看一下 调一下频谱图 采样率 找到key

1
AaaAaaaAAaaaAAaaaaaaAAAAAaaaaaaa!

解压拿到flag

总结

我以为两个flag.zip是一样的,就只看了一个 没想到一个是伪加密 一个是真加密 伪加密的压缩包 把两个加密位都改了,和个真的一样

去学一下 ssl tls的区别 还有加密 解密

可恶的黑客

过滤一下http

很明显的菜刀流量 看到访问了flag.txt

追踪http数据流

发现了一串html编码

1
&#102;&#49;&#97;&#103;&#123;&#115;&#105;&#49;&#49;&#121;&#98;&#48;&#121;&#101;&#109;&#109;&#109;&#125;

解码一下 拿到flag

小常识

1
2
3
4
5
6
7
EMID多种格式:

格式0:10位十六进制的ASCII字符串,即10 Hex格式。
格式1:将格式0中的后8位,转换为10位十进制卡号,即8H---10D。
格式2:将格式0中的后6位,转换为8位十进制卡号,即6H---8D。
格式3:将格式0中的倒数第5、第6位,转换为3位十进制卡号,再将后4位,转换为5位十进制卡号
格式4:将格式0中后8位的前4位,转换为5位十进制卡号,再将后4位,转换为5位十进制卡号,中间用“,”分开,即“4Hex + 4Hec”。

0000944664

94 ==> 148

4664==>18020

flag{148,18020}