红明谷线下摸鱼

前言

这次去红名谷线下,很累,但也很好玩,同时也是没发挥好的一局。

说来惭愧其实是被省里安排进线下的。因为无论是线上线下都是一个人打。。然后线上距离进线下还有一定距离。

原本然后想着算了就划水了,连wp都懒得交。结果因为是本地政府办的,所以特地安排了个“本地代表队”。

然后就愉快的进去划水了。
photo_2021-04-17_23-21-32.jpg

经过

和预期的不同,这次比赛是打靶场的形式。并不是AWD形式,这是开打之前我才知道的。甚至在比赛之前一晚的讨论都是关于AWD的,
详情可以看

靶场还是比预期的熟悉很多,上来分为7个资产和一堆其余的小资产,都在两个/24段中,之后你需要收集这些资产,打下这些站点,就和现实中有点类似,不过简化了内网渗透的流程。特别是域渗透啊钓鱼啊这方面都省去了。不过总体来说还是十分的好玩的。

有幸混了个首杀1血,直接拿tp洞打的。那些非资产的那些东西,是允许搅屎的。打完上去把shell或者漏洞点改了之后别人就登不进去了,所以基本就是比个拼手速的过程。

我也是在每个点打过去之后才知道。一个人手动慢慢每个访问过去,把所有资产理清楚之后,站点也基本被其他人打完了。

还有就是,他这个没办法反弹到我们的攻击机系统,然后冰蝎那个正向shell和rege那啥的正向反弹shell代理实在是tmd不能用,下次我一定tmd要整个web组件让cs可以网页正向上线,淦。导致内网机器压根没打。

甚至被搅屎到,我还要靠着爆破别人的webshell才能上车。因为有个组件是phpstudy部署的。然鹅我第一次用xray没扫到。。甚至赛组给了提示之后我每次都用各种exp尝试都失败,这时候你无法知道到底是你的方式有问题还是靶机有问题,不敢去找裁判。

导致最后才根据别人的车上了这个环境。

一个人打是真的太难太累了。很多都没发挥出来,甚至不如和群友打的1/10的水平。最后由于实在太菜,只摸到了个这个
photo_2021-04-18_00-49-41.jpg
(不是俺的手)

题外话

不过好处是面到了一个很早以前认识的师傅。认识的时候都不敢讲话,俺害羞。

最后还收到了Canarypwn 托同学带的明信片,真的是太太太太感谢辣

photo_2021-04-18_00-51-39.jpg

拖着保肝16小时的身躯写完了这个,不行了太困了睡啦

Tags: ctf, 线下

win10自带输入法取证的tips

前言

因为前两天打ctf时候遇到了一个题,挺有意思的。win10默认输入法会记录下词频和一些语句信息。
详细可以参考文章: 输入法取证:一种Windows8/10中文用户输入痕迹信息
文章地址很容易失效,我就提供标题了。
总之就是在
C:\Users\username\AppData\Roaming\Microsoft\InputMethod\Chs 下有两个ChsPinyinUDL.datChsPinyinIH.dat文件里面有记录词频信息。

依据上述基于数据流的逆向测试策略,对两个DAT用户词库文件进行结构分析,发现ChsPinyinlH和ChsPinyinUDL两个DAT文件存储的输入记录信息数据起始位置分别是在文件偏移地址0x1400处和0x2400处,每条用户输入记录信息的存储长度都是固定的,占用60个字节。

结构如下
chsPinyinIH结构.jpg
ChsPinyinUDL结构.jpg

最后附上代码

f = open("ChsPinyinUDL.dat","rb")
data = f.read()
data = data[9216:]
f.close()
i = 60
n=1
while True:
    chunk = n*i
    chunk_len = data[chunk+12:chunk+12+48]
    hex_chunk_len = ['%02x' % b for b in chunk_len]
    print(chunk_len.decode("utf-16"))
    n+=1
    if chunk>=len(data):
        break
f = open("ChsPinyinIH.dat","rb")
data = f.read()
data = data[5120:]
f.close()
i = 60
n=1
while True:
    chunk = n*i
    chunk_len = data[chunk:chunk+4]
    hex_chunk_len = ['%02x' % b for b in chunk_len]
    print(hex_chunk_len[::-1])
    unicode_chunk = data[chunk+12:chunk+12+data[chunk]*2]
    hex_unicode = ['%02x' % b for b in unicode_chunk]
    print(hex_unicode[::-1])
    print(unicode_chunk.decode("utf-16"))
    n+=1
    if chunk>=len(data):
        break

效果图
QQ图片20210405001434.jpg

Tags: ctf, 取证

时隔许久的ctf感想

加了个社团,正好这次省内有比赛,就参加了。

不如说ctf,这种东西,我老早就不大接触了。。

这次是三人一组,和两个学长一起_(:з」∠)_。。学长们都好强啊。。像我这种只能划水的。只能默默的看着了。。

因为早上体测时间和比赛开始时间撞上了。所以错过了一些题目。

中午的时候弄Misc,是一道图片隐写。我没看题目,看了下pcap文件,一看是一个分析sftp的。

乐了。东西全部提取出来了。其中一个是假flag。结果一看题目,Misc,好哇是隐写。

想了半天以为是什么高级隐写,分析了IHDR什么分析了半天,错失了一血的机会。

最后确实普通的LSB低位隐写就行了。。

之后有一道题目很有意思。

拥有写任意文件的权限,但是任意文件之前会必须执行一个die命令来退出。这就很讨厌了。

被这个题目卡了半天,最后还是看了大佬的博客谈一谈php://filter的妙用

才解出来的。。

还有一些题目,比方说flask那题目。

标准的转义漏洞拿secret_key计算得出admin的session然后登录拿flag。

我到最后快结束了才知道这题目是有代码的。惊了!!!

然后花了一些时间审计代码。

就快要得出结果的时候结束了_(:з」∠)_。。真的好可惜啊。

还有就是加密和逆向,这两个,前面一个是看得懂代码看不懂意思(。后面哪个是看不懂代码但是懂的意思hhhh,但是无论哪个对我来说都是苦手级别的存在,所以就完全跳过了QAQ

通过这次,我也感觉我PWN水平太弱了。PWN题目感觉是我明明可以驾驭的,但是之前因为没有驾驭的经验所以导致这次完全的失分。

第一道题是很明显的溢出漏洞,第二个是很明显的format溢出。

不对,是非常明显,而且还给出了bin文件。

理论只要上去构造溢出exp,然后去nc连接执行

就行了,但是因为没有经验,现场去学习也太难了。

所以无奈只好放弃了。。

最后排名的话,还算过得去,原本是二十多名,前几名都是省内那种dalao级别的学校,RBQRBQ,tqltql。

但是最后瞬间低了十名,感觉是同学校的交换flag还是啥_(:з」∠)_。。毕竟是同一个学校的。

不过即便是这样,决赛应该还是能进的吧。。

AWD倒是真的没怎么打过Hhhh这次过去貌似真的只能划水了23333

Tags: ctf