我的第一道CTF题目,入坑记录
由于参加鲲鹏杯一题没解出来(哈哈,就算和豆包激情对话,也是无能为力),所以想试着学一学,看看以后可不可以自己解出来。。。
##准备过程
首先就是重装Ubuntu,原来我之前装的是服务器版,看着别人的桌面版,我还以为我的虚拟机还未开智呢,原来是它的主人还未。。。
os:拿到题目,我在那边研究半天怎么打开靶机,一直在尝试用浏览器,原来是用终端打开啊嘻嘻
补充知识点:
对比一下容易混淆的工具
- curl / 浏览器:封装好HTTP,底层也是TCP,但你不用手写GET报文
- nc:裸TCP工具,需要手写GET HTTP报文,适合CTF看原始流量
##题目信息
SHARDLINE 分片重组
分类: MISC
SHARDLINE 是一个远程密钥分片服务:它掌握着一个 32 位十六进制密钥,但每个连接最多只允许执行 3 次 GET
##解题过程
1. 读懂限制:单连接最多3次查询,不能在同一个会话拿全部分片;
2. 网络编程:循环新建socket连接绕过会话限制,收集分片;
3. 字符串拼接重组数据,提交。
脚本
from pwn import *
host = “direct-ctf2.dasctf.com”
port = 27323
shards = [“”]*8
for i in range(8):
r = remote(host, port)
r.sendline(f”GET {i}”.encode())
res = r.recvline().decode().strip()
shards[i] = res.split()[-1]
r.close()
print(f”shard {i}: {shards[i]}”)
key = “”.join(shards)
print(“full key:”, key)
r = remote(host, port)
r.sendline(f”DONE {key}”.encode())
print(r.recvall().decode())
r.close()
os:我是不是还要认真学一下python,以后自己写脚本啊?
