2022工业信息安全技能大赛(鹏城·中汽创智杯)WriteUp

1.发送控制车辆起步攻击报文成功了吗

根据题目提示,直接搜索到

false{MzIwZjA1Y2RmMDI0OGZmMGQwODZhOGYxYTAyNDk5NTg=}

解码后为 320f05cdf0248ff0d086a8f1a0249958 按格式提交。

2.全身而退

ida分析。用户名要求有@。密码逐位比较。

  if ( hasAt != 1 || (unsigned int)strlen((int)v17) <= 3 )
    wrong();
  if ( (unsigned int)strlen((int)key) <= 0x18 )
    wrong();
  if ( key[5] != '-' && key[11] != '-' && key[18] != '-' )
    wrong();
  if ( key[0] != key[10] )
    wrong();
  if ( key[1] != 'k' )
    wrong();
  if ( key[3] != 'y' )
    wrong();
  if ( key[25] )
    wrong();
  if ( key[2] != 'e' )
    wrong();
  if ( (unsigned __int8)key[4] != (unsigned __int8)key[17] + 2 )
    wrong();
  if ( key[6] != 'd' )
    wrong();
  if ( key[7] != 'r' )
    wrong();
  if ( key[8] != key[22] )
    wrong();
  if ( key[9] != 'I' )
    wrong();
  if ( !double_add(key[5], key[12], 9) )
    wrong();
  if ( (unsigned __int8)key[23] != (unsigned __int8)key[17] + 1 )
    wrong();
  if ( key[13] != 's' )
    wrong();
  if ( key[14] != 'f' )
    wrong();
  if ( !double_add(key[15], key[16], '\xFF\xFF\xFFz') )
    wrong();
  if ( key[21] != 'T' )
    wrong();
  if ( key[16] != 'H' )
    wrong();
  if ( key[20] != 'u' )
    wrong();
  if ( key[17] != '5' )
    wrong();
  if ( key[19] != 'p' )
    wrong();
  if ( key[22] != 'F' )
    wrong();
  if ( key[10] != key[21] )
    wrong();
  if ( !double_add(key[24], key[20], '\xC3') )
    wrong();

得到key。输入验证。正确 。

Enter Key

 > Tkey7-drFIT-csfgH5-puTF6Y

  You key for flag.zip is{r%bb1t_s3w14l*2JBH8tckcTj}

得到解压密码。。解压后base64解码提交

fbfe1831e31f06826c04619f71d33cdd

3.你能获得TBOX权限么

远程172.10.0.9后扫描发现存在172.10.0.7
开放22SSH端口
爆破为root/123456

登陆后root下即为flag

4.双向认证-I

登录172.10.0.7后
在配置目录下获得flag

5.ADB

对得到的赛题压缩包进行字典爆破。得到密码为admin

解压压缩包获得流量文件

使用wireshark打开流量包,在流量包中的tcp报文中发现发现一串字符串,使用base64解密获得 flag

6.CAN校验和

看html源文件。 flag{e3}

7.蓝牙钥匙的春天

打开提供的流量包 ble.pcapng

使用crackle工具对流量包进行解密

crackle -i ble.pcapng -o decode.pcapng

再使用wireshark打开解密好的流量包

3633333733363633363133363633363233333336
33343334333136323634333433303744

在认证阶段过后的交换数据中提取出4组不重复的数据 3636364336313637374233393632363133333339
3337333333363335333236333330363536353330
进行两次16进制转字符串后得到flag

重新拼接

flag{9ba3973652c0ee0c76ca6cb36441bd40}

8.IVI云通信逆向

使用浏览器打开提供的页面

在页面源码中发现密文

base64解密后得到flag

9.UDS会话诊断报文逆向

打开得到的题目页面

查看源码可知点击图片获得报文内容

得到报文

072E08037F101200000000

072E080250850000000000

0726080210850000000000

072E080250850000000000

经分析错误报文应为072E08037F101200000000

flag{072E08037F101200000000}

10.想进OTA云平台后台吗

得知test,进行口令爆破,得到123456,登陆系统,即可得到flag

11.你能获取OTA云平台管理员账号吗

test用户登陆后,修改密码可以越权,修改ID为2、3、4、5,其中之一修改了admin密码,登陆系统

12.OTA云平台下载升级包

登陆IVI控制器后,在下载文件夹中,有个flag.bin

13.犯病的证书

每一行base64 -> base32 -> hex 得到两个大数,不管哪个是e,但肯定特别大,用winner attack,但不知哪个是n,哪个是e,逐个尝试.

14.OTA也有密码学

p 高位攻击

import gmpy2
from libnum import n2s


def get_p():
    p_tmp = high_p >> 100
    pbits = 512
    kbits = pbits - p_tmp.nbits()
    p_tmp = p_tmp << kbits
    print("upper %d bits (of %d bits) is given" % (pbits - kbits, pbits))
    PR.<x> = PolynomialRing(Zmod(n))
    f = x + p_tmp
    x0 = f.small_roots(X=2 ^ kbits, beta=0.4)[0]  # find root < 2^kbits with factor >= n^0.4
    p = p_tmp + int(x0)
    print(p)
    # 12672576027810761975840956553905924324108169270520824932988309977042643967090398117355253953195633095326913407044418517938977305083732740090760858841266427
    return p


n = 99887986204824691113457754897953425406993412586030259044004283966194202433452866024995465248688896193125819761385921365388030307691682145106269184432165936577174730773115650122496935533603059557681592007428920955897003476296682566264772005134125852663260971355535474414913501328212769545952135420770881499467
high_p = 12672576027810761975840956553905924324108169270520824932988309977042643967090398117355253953195633095326913407044418517938976916071656473263683948565757952
c = 60892632870531527736168936092764360540444001132516385707722503916908754103226695486017453487062736234381054676371362727629810463942131025911987548258129968494970568666808924707742973891133835509680152888846660514999867855904526245118653625627350962892070880801708631095426004949079737332458656396176274243234
p = get_p()
e = 7

q = n // p
phi = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print(n2s(int(m)))

15. 不安全的远程诊断安全

最后几行有flag{XXXXX} base64 -> 在线解md5 得到 md5(md5($pass)): 为Thanos

将 Thanos md5加密得到 flag

找回丢失的密码

1.加密的wifi流量 爆破cap. 最后爆得root12222。
2.解密流量 airdecap-ng a.cap -e wifi -p root12222
3.最后在 tcp 流量中找到 504B0304压缩包,共2段。导出后解压。
4.提示要密码,爆一下。123
5.得到加密字符串 2次解密后得到 flag.

posted @ 2022-09-15 19:22  wgf4242  阅读(163)  评论(0编辑  收藏  举报