可能是世界上第一张木制银行卡

# 现可免费申请,无工本费、快递费、年费,中国可送达。

> 传送门:TreeCard

难度一般,脑洞较多
第一次打线下赛,结果主办方也是第一次办线下赛,体验极差
打完比赛啥也没得,回学校第二天了,主办方说排名出了点问题,我们队原本应该是三等奖的...
有些题队友做了,就没存

Misc

很简单

WriteUp

附件是一个pdf,直接用Acrobat编辑一下删掉图片就能看见flag。

flag

flag{kehfh@#$%hne123ahfe}

隐写

WriteUp

得到带密码的zip附件,字典跑一下,密码是password,解压得到hello.exe

因为是隐写题,所以应该不是re的套路,于是exeinfope直接提文件,得到一张jpg。

stegdetect检查了一下发现有报错,于是猜测可能有高度隐写,改高度得到key is 0xA这个提示。

于是回到hello.exe,用ida打开发现AES加密后的结果U2FsdGVkX1/86UxkQm0SxhGr5F/SPbTqob3rYYCY9+B+CVNET7H7gcLAjsfTd1Xu,尝试用密码0xA解密发现并不像。最后用10当密码成功解密得到flag。

flag

qlb{eb14477a268ea527}

MODBUS协议

WriteUp

这题不知道协议是啥,反正暴力肉眼找就完事了。

image.png

flag

Flag{TheModbusProtocolIsFunny!}

二维码?

WriteUp

under_your_nose.jpg

观察附件可以发现每隔20像素点就存在一个异常像素,于是猜测是二维码点阵,那么既然像素点太小,那么就写脚本把像素点放大20倍,就差不多正好能把图给铺满。

import cv2

img = cv2.imread("under_your_nose.jpg")
i = 0
while i <= 1880:
    j = 0
    while j <= 1580:
        for x in range(i, i+20):
            for y in range(j, j + 20):
                img[x, y] = img[i, j]
        j += 20
    i += 20
cv2.imwrite("test2.png", img)

test2.png

然后发现实际上点阵不是二维码,只是一张图被分割了而已。

flag

flag{be_careful_more_careful!!!}

awd

就一个靶机需要维护,因为主办方没公布规则,所以应当默认waf是可以用的,所以直接挂上从wupco / weblogger改的流量分析+waf。(其实没改多少,主要是优化文件结构、安装逻辑、以假乱真flag替换逻辑、页面UI,功能没啥增加,以后如果还有awd打的话,可能会接着加功能)(因为功能没改完,所以暂时不开源,下次一定)

然后题目又正好是校内训练时的题,所以exp都还在,然后平台又是辣鸡云诚科技偷天换日改的vidar-team / Cardinal,和校内训练相当于是同个平台,所以交flag的api也一样。

直接一键打爆!!!

最后快超过榜一的时候,主办方下场说有些队打不下去了,不打了,换ctf题...(不是针对榜一啊,榜一确实牛逼)


The End


什么都会,但又什么都不会。