Author: ch3cke
0x00 签到题
文件连接:点击下载
直接在本地运行,会调用摄像头识别人脸,如果有三个人出现就会在运行终端出现flag;(不过识别不是那么精确,感有时候一个人也可以)
1 | flag{87e37d95-6a48-4463-aff8-b0dbd27d3b7d} |
0x01 saleae
文件地址:点击下载
打开压缩包,发现是一个saleae.logicdata这样的文件,没见过,google一下,找到一点资料,下载软件,打开分析。
信道一:时钟信号
信道三:数据信号
设置一下,然后直接分析得到答案。(ps:也可以把数据信号的数据导出成二进制,然后转成字符。)
1 | flag{12071397-19d1-48e6-be8c-784b89a95e07} |
0x03 24c
文件地址:点击下载
这题和上题的的数据差不多,不过所用的协议有点不同,采用的是i2c,这是详细介绍,一样也是用Saleae Logic打开文件,分析采用i2c协议,可以看到有数据读写的过程。
但是存在一个坑点就是,这个东西需要你稍微看懂一点这个语法的意思,例如 Setup Write to ['160'] + ACK
意思是写入数据,ACK表述信号收到(可能不是那么标准),’ ’+ACK表示写入的地址,后面的是写入的数据,翻译:向设备的0x20(’ '的ascill为0x20)处写入数据
然后,在信号结束的地方,有一个 Setup Write to ['160'] +ACK \n \t+ACK
,表明是把0x09、0x10位置的数据修改为ac,数据下标是从0开始的,一开始不小心疏忽了,一直错误。
至于我是怎么理解的,请看这个连接
1 | flag{c46dac10-e9b5-4d90-a883-41cf163bdf4e} |
0x03 * usbasp
又是这个题目,还是这个软件,一样的打开方式,分析数据,发现采用的又变回SPI协议了,这个题目说起来。。。。很简单的,但是没有想到点上。这个信号不同的就是他的数据输入有点特别,所以我们在分析的时候需要做一点小小的设置。
1 | flag{85b084c6-42e6-495c-87b4-46dfb1df58a0} |
0x04 easyGo
文件地址:点击下载
首先用IDA查看文件内容,发现是go语言编写的,ida无法识别函数名,有点难受。去找找ida逆向语言的插件–IDAGolangHelper。加载后,可以识别大部分函数名字。
找到主函数:mian_main,f5一下。可以看到程序逻辑:
注意到有个比较,以前学过go语言,在这个题目里,"_"可以识别成“.” ,大部分都是包的调用,很好理解 。发现比较的两个值都在栈里,所以简单了,只要用pwndbg调试,在比较前下个断点,在栈面可以找到flag。
1 | flag{92094daf-33c9-431e-a85a-8bfbd5df98ad} |
0x05 JustSoso
打开题目可以看到有一个file参数,可以查看源码发现还有一个hint.php文件。先尝试用伪协议读取源码。
1 | <html> |
hint.php
1 |
|
看到unserialize和魔术方法就会想要利用反序列化漏洞
想到利用反序列化的漏洞,绕过__wakeup函数
由于handle是私有变量,因此payload应该是
1 | /// |
利用php中的"&",,绕过随机数
利用"///",绕过parse_url
1 | flag{38b3ff3b-3ac0-4a8e-a344-b75b0f23bb68} |