2026湖州市“育才杯”信息安全竞赛wp
侧边栏壁纸
  • 累计撰写 2 篇文章
  • 累计收到 6 条评论

2026湖州市“育才杯”信息安全竞赛wp

atri
2026-10-28 / 0 评论 / 2 阅读 / 正在检测是否收录...

1、RSA简单解密

下载附件 rsa.txt 内容为:

e=65537
n=248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp=905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
c=140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751

签到题,用现成的脚本梭哈:

import gmpy2 as gp

e = 65537
n = gp.mpz(248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113)
dp = gp.mpz(905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657)

c = gp.mpz(140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751)

for x in range(1, e):
    if(e*dp%x==1):
        p=(e*dp-1)//x+1
        if(n%p!=0):
            continue
        q=n//p
        phin=(p-1)*(q-1)
        d=gp.invert(e, phin)
        m=gp.powmod(c, d, n)
        if(len(hex(m)[2:])%2==1):
            continue
        print('--------------')
        print(m)
        print(hex(m)[2:])
        print(bytes.fromhex(hex(m)[2:]))

(类似的简单rsa可以整理成一个脚本合集,以便下次秒杀拿血)

ScreenShot_2026-10-28_220137_168.png

最后得到flag: flag{wow_leaking_dp_breaks_rsa?_98924743502}

2、变异凯撒

附件内容为:

lzw&BEjQwPesfrKR;cJ?xcWs|A%-(HktTn

仔细观察前四个字符的ascii值为 108 122 119 38
而flag四个字符的ascii值为 102 108 97 103
可见这个凯撒的偏移逻辑是 6+i*8 并取模95
下面给出解密脚本:

s = "lzw&BEjQwPesfrKR;cJ?xcWs|A%-(HktTn"
flag = "".join(
    chr((ord(c) - 32 - (6 + 8*i)) % 95 + 32)
    for i, c in enumerate(s)
)
print(flag)

最后得到flag: flag{v4r1ant_c43s4r_1s_st1ll_w34k}

1、xcode解码

下载得到 Xcode.txt 内容为:

UKapsO3cnR1-VFqluK17gSZVuGLRBOZd7JqlgF33iA1o+

签到题,用随波逐流一把梭,得到:

ScreenShot_2026-10-28_214450_180.png

发现是一串base64

ZmxhZ3t0aGlzX2lzXzIwMjZIWllDQn0=

二次解码后得到flag: flag{this_is_2026HZYCB}

2、zip加密

下载附件得到 zip 文件,zip包含一个 flag.txt 的文件,但是压缩包有密码
拖入 winhex 后,发现文件末尾有一串base64编码:

V2hhdF9pU190SGlzXzI3NTYyNmQ2NTdlNmY1NTY2Nzk2NjY=

解密后得到:

What_iS_tHis_275626d657e6f556679666

第一眼想到这应该是压缩包的密码,但是怎么试都不对

ScreenShot_2026-10-28_220729_692.png

(主包当时到这里已经完全没思路了,赛场上没想出来怎么做)
结果把 275626d657e6f556679666 倒序后放进随波逐流可以发现:

ScreenShot_2026-10-28_221131_108.png

在base16解密后得到 five_number 的提示,也就是五位数字的密码爆破:

ScreenShot_2026-10-28_221622_420.png

爆破得到密码: 11452
打开 flag.txt 文件后,发现是一个巨长的字符串:

JVXXMZKUN4QDIOJVFQQDGMJUBJFWK6KVOAQCEQ3BOBZUY33DNMRCYIBRBJGGKZTUINWGSY3LEAYQUTDFMZ2EI33XNYQDCCSNN53GKVDPEA2DSNJMEAZTCMYKJVXXMZKUN4QDIOJVFQQDGMJSBJGW65TFKRXSANBZGQWCAMZRGIFE233WMVKG6IBUHE2CYIBTGEYQUTLPOZSVI3ZAGQ4TGLBAGMYTCCSEMVWGC6JAGEFE233WMVKG6IBUHEZSYIBTGA4QUTLPOZSVI3ZAGQ4TELBAGMYDSCSNN53GKVDPEA2DSMRMEAZTAOAKJVXXMZKUN4QDIOJQFQQDGMBXBJGW65TFKRXSANBZGAWCAMZQGYFE233WMVKG6IBUHA4SYIBTGA3AUTLPOZSVI3ZAGQ4DSLBAGMYDICSNN53GKVDPEA2DQOBME........

但是观察片段能发现是一个base32编码,于是解码

ScreenShot_2026-10-28_222039_867.png

可以发现是一个鼠标宏脚本轨迹:

ScreenShot_2026-10-28_223300_220.png

(具体有什么通用的方法去解码这个脚本,还在研究)

模拟鼠标后得到:

ScreenShot_2026-10-28_223419_375.png

得到flag: flag{8f16a9717824aa456eb9a98653863993}

3、流量分析

拿到流量分析题先筛http:

http.request

ScreenShot_2026-10-29_105640_176.png
可以发现前面大量 GET 请求访问不同路径,表现出目录枚举的特征
继续往下看,会发现:

24207:/test.jsp?pwd=admin&cmd=cat%20/www/wwwroot/test.com/shell.jsp

有人想打开 shell.jsp 这个文件,那我们可以查找24208响应包看看服务器返回了什么

frame.number == 24208

我们在响应包可以找到:

Content-Encoding: gzip
Transfer-Encoding: chunked
String xc="748007e861908c03";
Cipher.getInstance("AES")
new SecretKeySpec(xc.getBytes(), "AES")

意思是把 xc 的字符串字节拿来作为 AES 密钥
但是现在只有密钥没有数据,找找发送给 shell.jsp 的 POST 请求

http.request.method == "POST" &&
http.request.uri contains "shell.jsp"

找到24362包的响应包 24364 包
提取出密文128字符的数据:

b5c1fadbb7e28da08572486d8e6933a84c5144463f178b352c5bda71cff4e8ffe919f0f115a528ebfc4a79b03aea0e31cb22d460ada998c7657d4d0f1be71ffa

使用 cyberchef 解密:

添加 AES 和 gunzip

ScreenShot_2026-10-29_124042_154.png

最终得到flag: flag{9236b29d-5488-41e6-a04b-53b0d8276542}

1、md5绕过

靶场主页源码:

<?php
highlight_file(FILE);
echo "<hr><h3>Result:</h3>";

if (isset(
POST[′a′])andisset(P OST[ ′ a ′ ])andisset(_POST['b']))
{
if ($_POST['a'] != _POST['b'])
    {
        if (md5(_POST['a']) == md5($_POST['b']))
echo getenv('FLAG') ?: 'flag';
else
echo 'you are wrong';
}
else
echo "请输入不同的a,b值";
}
Result:

逻辑很简单,用post传参a和b,并且a和b的md5值要相同
那就用最常用的

a=240610708 & b=QNKCDZO

这两个结果都是 0e数字,PHP 用 == 比较时,会按科学计数法将它们都视为 0,因此通过检查
(不用疑惑为什么用这两个,因为常用,记在小本本上就好了)

240610708 → 0e462097431906509019562988736854
QNKCDZO   → 0e830400451993494058024219903391

(因为是线下比赛,主包没有保存靶场资源)
最后用插件hackbar提交post请求即可得到 flag

1、签到题

签到题,没什么好说的,打开exe输入指令即可

微信图片_20261029102650_30_63.png

4d509b503f31cd0a2338337f7fe46820.png

得到flag: flag{Welcome_to_reverse}

0

评论 (0)

取消