裸的无线电,手机软件robot36一把梭
照百度的教程起手 https://www.angelic47.com/archives/97/
ida打开后看到main函数,里面有很多寄存器操作,最后进入死循环。
找了一圈没找到中断服务函数,回过头来看初始化,发现了问题
对这个寄存器居然赋了好几次值,还有几次是重复的值,而且每次结束还要delay一下。
查资料了解是外部中断
所以这一位是模拟外部中断的,也就是开机假装按一次密码,然后把他对应过来就是1442413,得到flag
作为地主赢了就有弗拉格
题目给的流量包是scrcpy-server 产生的流量,要么提取屏幕上的数据,要么就是鼠标的轨迹。
往安卓端发送的屏幕操作数据包就是WRTE开头,OKAY是心跳包。
提取流量包整理下就可以看到鼠标出现的轨迹点位。
简单的画个图就好了。
附件里的十六进制是不完整的jpg,在00 0E后补上FF 8D FF,然后将多余的00删去
再将整体逆序,可以得到一张jpg
图片十六进制中还藏有信息
图片备注中也有信息
根据提示将上面的字符串解R**,密钥为 that_is_not_right_man,得到flag
http://tool.chacuo.net/cryptrc4 ← 用这个网址解
把ida里识别那些指令当作函数处理又能看到很多函数出来了,把字符串写进ram,然后串口打印下SCTF{,再模拟按一次密码。然后就开始等中断了。
几个按键中断函数其实我是不知道是怎么指向过来的,不过靠每个函数第一步挂起寄存器复位也猜个八九不离十了。MEMORY[0x2000003C]这一位是记录这是按到第几位密码的,然后中途按键会修改一下ram中的字符串,最后按下3时打开DMA使能,发送数据。(原来第一题的预期解在这里。。)
DMA发送ram数据到USART缓冲区,一切看着那么合理,flag就是交不上去(不过后面解出来了)
DMA这样配置的,串口缓冲区只有8位,所以发送每次取16位,高8位就被扔掉了,所以flag为that1s___rightflag
本文作者:白帽100安全攻防实验室
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/135948.html