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可以整理成一个脚本合集,以便下次秒杀拿血)

最后得到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+签到题,用随波逐流一把梭,得到:

发现是一串base64
ZmxhZ3t0aGlzX2lzXzIwMjZIWllDQn0=二次解码后得到flag: flag{this_is_2026HZYCB}
2、zip加密
下载附件得到 zip 文件,zip包含一个 flag.txt 的文件,但是压缩包有密码
拖入 winhex 后,发现文件末尾有一串base64编码:
V2hhdF9pU190SGlzXzI3NTYyNmQ2NTdlNmY1NTY2Nzk2NjY=解密后得到:
What_iS_tHis_275626d657e6f556679666第一眼想到这应该是压缩包的密码,但是怎么试都不对

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

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

爆破得到密码: 11452
打开 flag.txt 文件后,发现是一个巨长的字符串:
JVXXMZKUN4QDIOJVFQQDGMJUBJFWK6KVOAQCEQ3BOBZUY33DNMRCYIBRBJGGKZTUINWGSY3LEAYQUTDFMZ2EI33XNYQDCCSNN53GKVDPEA2DSNJMEAZTCMYKJVXXMZKUN4QDIOJVFQQDGMJSBJGW65TFKRXSANBZGQWCAMZRGIFE233WMVKG6IBUHE2CYIBTGEYQUTLPOZSVI3ZAGQ4TGLBAGMYTCCSEMVWGC6JAGEFE233WMVKG6IBUHEZSYIBTGA4QUTLPOZSVI3ZAGQ4TELBAGMYDSCSNN53GKVDPEA2DSMRMEAZTAOAKJVXXMZKUN4QDIOJQFQQDGMBXBJGW65TFKRXSANBZGAWCAMZQGYFE233WMVKG6IBUHA4SYIBTGA3AUTLPOZSVI3ZAGQ4DSLBAGMYDICSNN53GKVDPEA2DQOBME........但是观察片段能发现是一个base32编码,于是解码

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

(具体有什么通用的方法去解码这个脚本,还在研究)
模拟鼠标后得到:

得到flag: flag{8f16a9717824aa456eb9a98653863993}
3、流量分析
拿到流量分析题先筛http:
http.request
可以发现前面大量 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: chunkedString 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

最终得到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输入指令即可


得到flag: flag{Welcome_to_reverse}
评论 (0)