2022 CICV智能网联汽车漏洞挖掘赛Writeup–BinX4
0x00 仔细看图片
图片用010打开发现有PK,也就是说包含压缩包,用foremost解出来,解压得到两个png文件,但其实都是zip。
flag3有密码,flag1解压得到hint,密码是4位,爆破得到6666,解压得到realflag的图片,使用stegsolve查看发现是lsb隐写。
0x01 图片仔细看
补文件头,ocr识别flag。
0x02 简单的流量分析
在pcapang导出secret.png,可以发现密码是9527。
拼接二维码,得到BASE Family Bucket ??? 85->64->85->16->32
将编码后的flag反着顺序解即可。
|
|
0x03 解析音频
slienteye导出flag.txt
U2FsdGVkX1/ZEFKooGZ4A22yxGmim1eB4vd9WpPhd//5+gaGmmntCgvb1GRoIVyc
RC4.txt里面的内容是社会核心价值观编码,解码得到!@#$123
文明民主自由富强文明和谐文明自由和谐民主和谐文明和谐和谐
在http://tools.jb51.net/password/rc4_encode进行解码即可得到flag。
0x04 ECU里的秘密2
|
|
e很大,明显是维纳攻击
|
|
0x05 细心
改后缀名为zip,解压在media里面看到一个可疑的二维码,扫描得到flag。
0x06 眼见为实吗?
改后缀名为zip,在word/document.xml发现flag
0x07 图片不见了
根据wsxdrfvtgbuhb85799zsedcftgb猜测是键盘密码,wv85799m,解压得到一张图片,010打开在文件尾部发现flag。
0x08 不要乱安装运行文件
用ig搜索目录下的flag字符串
搜到两个flag,由于其中一个flag和前面的题目重复了,所以只需要提交另一个就可以。
0x09 这是一个控车说明文档吗?
分析判断doc文件实为rar,且存在密码,拿到LostMyPass网站上跑密码,得到123456。
解压得到flag。
0x0A 串口的秘密
1.Enter Serial 函数定位关键函数sub_400D48
2.Ida 反汇编进入函数 sub_400D48
3.使if 判断不成立
得出字符串 a 为 a = [‘T’, ‘z’, ’e’, ‘y’, ‘7’, ‘-’, ’d’, ‘r’, ‘F’, ‘L’, ‘T’, ‘-’, ‘c’, ’t’, ‘f’, ‘g’, ‘H’, ‘5’, ‘-’, ‘p’, ‘u’, ‘T’, ‘F’, ‘6’, ‘Y’]
v9与字符串a异或更新 v9的值
解密脚本
a = ['T', 'z', 'e', 'y', '7', '-', 'd', 'r', 'F', 'L', 'T', '-',\
'c', 't', 'f', 'g', 'H', '5', '-', 'p', 'u', 'T', 'F', '6', 'Y']
v1 = [0]*4
v1[0] = b'\xFE\xC4\xA6\xF9\xE4\xF8\xB1\xD9'
v1[1] = b'\xD2\xAB\xA6\xF0\xE6\x9A\xC1\x8A'
v1[2] = b'\x9D\xDA\xC0\xE9\xFB\xEA\x82\xF5'
v1[3] = b'\xCC'
b = v1[0][::-1]+v1[1][::-1]+v1[2][::-1]+v1[3]
b = list(b)
c = [0]*25
for i in range(len(a)):
c[i] = ord(a[i])^ (~(b[i])%256)
print(''.join(chr(i) for i in c))
0x0B 文件加解密
Key.html 提取flag值
Hex解密得 jsfuck代码
Jsfuck解密得到 js代码
Base64解密PHNyY2lwdD5hbGVydCgiZmxhZ3s2NmI4YzRkMDFjMzI2NDljZTZkMzU0NzkwMTg5OGE4NX0iKTwvc2NyaXB0Pg
得<srcipt>alert("flag{66b8c4d01c32649ce6d3547901898a85}")</script>
0x0C 控车密码完了
Jeb反编译apk文件,定位如下关键代码,找到相应字符串,编码解出flag
0x0D 最长的套路
树的直径(最长路径)证明:https://www.cnblogs.com/wuyiqi/archive/2012/04/08/2437424.html
#处理html部分
from bs4 import BeautifulSoup
from collections import deque
import re
with open("Maze.html", "r") as file:
html_doc = file.read()
soup = BeautifulSoup(html_doc, 'html.parser')
lattice = soup.find_all('td')
pattern = re.compile(r'border-([a-z]+):')
maze = []
for j in range(100):
temp1 = []
for i in range(j * 100, j * 100 + 100):
temp = ""
result = pattern.findall(str(lattice[i]))
print(result)
if 'top' not in result:
temp += "u"
if 'bottom' not in result:
temp += "d"
if 'right' not in result:
temp += "r"
if 'left' not in result:
temp += "l"
temp1.append(temp)
maze.append(temp1)
move = {'u': (-1, 0), 'd': (1, 0), 'l': (0, -1), 'r': (0, 1)}
queue = deque()
queue.append(((70,22), 0))
visited = []
ans = 0
ansv = ()
while queue:
v, res = queue.popleft()
if res > ans:
ans = res
ansv = v
if v not in visited:
visited.append(v)
for adj in maze[v[0]][v[1]]:
queue.append(((v[0] + move[adj][0], v[1] + move[adj][1]), res + 1))
print(ansv, ans)
结果最长路径为4056
0x0E 签到2
根据图片中信号格式,可以看出这是一个UART协议的信号,根据UART协议的说明,我们可以将信号分为1位低电平起始位,8位数据位和1位高电平停止位,由此把数据分成若干组,如下图记录。
连接起来便是一串数字,经过数据翻转和二进制转换后,可以得到flag。
|
|
0x0F wav音频的故事2
下载音频后,可以放进audacity中进行观察,发现这段音频每隔几秒会有一段数据,看频谱图可以发现这段数据有的存在红线,而有的没有红线。可以猜测这可能是一个摩斯密码,频谱的红线用来区分.和-,因此可以把密码记录下来。
|
|
解密码,但是翻转一下就得到flag。
0x10 web网站被黑了
下载文件发现是个PHP,里面有很多字符,转换发现这是个一句话木马,里面的连接密码是a,a加密md5为flag。
|
|
0x11 图片不见了
观察流量包,试着导出HTTP对象,发现一个奇怪的文件。
追踪这个流量可以发现百度网盘的资源地址,https://pan.baidu.com/s/1TV3hZK5kqLx3uxcYn0EyMw?pwd=7p61,下载后得到一张知乎图片,丢进Stegsolve,检查LSB隐写的时候可以发现nslookup,md5加密为flag。
0x12 补个成绩
纯纯靠车神的案例带飞,又是摆烂的一天。