前言
29号开始的 31号域开始打,打了一天到2月1 WEEK1就卡瓶颈了
整个参赛人数接近2千,写笔记记录一下一些脚本和解题思路
注:本文章在比赛结束前已开启文章密码保护,未泄露解题思路,比赛结束后正式开放文章
->Web方向
冲
Bypass it
点击注册
尝试burpsuite爆破无果,题目说不让禁用js 但那是迷惑人的,最后禁用js就可以注册成功
禁用后注册即可
注册成功直接登录就能拿到flag
ez http
打开后发现需要添加refrer头跟进访问此网站
Burpsuite开盒即用中文版:
抓包发送到重放器里面,且添加头部文件
让后这里说需要添加ua标识 直接复制在改上去
有实战渗透的的操作了(出的题就是好!,因为一些学校的edu还有公司网站的后台即使账号密码正确也需要本地或者内网访问 此时就需要添加头文件跟进访问)
用到burpsuite的403 bypass插件
flag就隐藏在authorzation里面 我们去百度搜索 bearer token解码
拿到flag
Select Coureses
打开是五个课程
这时候我们去选 选不了一点
抓包 如果发送到攻击模块里他是不会选课成功的 只有full=0的时候才会选课成功
一直点击发送 当full为0的时候就可以选课成功
多发几个重放器来回点
当五个都选完之后点击选完了就可以弹出flag
->Reverse方向
先主动分析让后丢gpt写脚本解
下面是一些常用的快捷键
ezIDA
主函数都不用看 点击view->string查看一下字符串就能找到flag
ezUPX
相关工具和工具使用http://t.csdnimg.cn/99IJG
脱壳等就不演示 sorry当时忘了截图了
UPX加壳过了,Exeinfo PE检查一下是有壳的(题目也直接给了UPX是已经加壳的,如果直接拖进ida看到的都是伪代码
用upx进行脱壳
脱完之后让后确保一下再次检查有无壳 之后拖进ida
在主函数里查看
丢gpt分析
for(i=0i64;(((BYTE)v6+i)0x32)=byte_1400022A0[i];+i)/使用for循环,从i=0开始,每次增加1,直到不满足条件
为止
{
/条件是:v6数组中的第i个字节,与0x32进行异或运算,得到的结果,等于byte1400022A0数组中的第i个字节
/byte_1400022A0数组是一个预设的值,用于和用户输入的标志进行比较
if((unsigned int,)+v3>=0x25)/如果满足条件,就将v3变量增加1,然后判断它是否大于等于0x25,即37
sub_140001020(“Coooo1!You rea.11 y know a1itt1 e of UPX!”);/如果v3大于等于37,就调用sub_140001020函数,输出恭喜的话
Cooool!You really know a little of UPX!”
return0:/然后返回0,表示程序正常结束
}
}
sub_140001020(“Sry,try again plz…”);//如果for循环结束,说明v3没有达到37,就调用sub_140001020函数,输出抱款的话”Sry,try
again plz…”
return0://然后返回0,表示程序正常结束
根据分析结果我们需要找到byte_140022A0的字节
我们把140022A0的字节复制过来 db后面的都是1400022A0字节 把蓝色db后面的字节都复制下来 从64h到32h
之后写脚本
byte_1400022A0 = [0x64, 0x7B, 0x76, 0x73, 0x60, 0x49, 0x65, 0x5D, 0x45, 0x13, 0x6B, 0x2, 0x47, 0x6D, 0x59, 0x5C, 0x2, 0x45, 0x6D, 0x6, 0x6D, 0x5E, 0x3, 0x46, 0x46, 0x5E, 0x1, 0x6D, 0x2, 0x54, 0x6D, 0x67, 0x62, 0x6A, 0x13, 0x4F, 0x32]
def find_flag():
flag = ""
for i in range(len(byte_1400022A0)):
for j in range(256):
if (j ^ 0x32) == byte_1400022A0[i]:
flag += chr(j)
break
return flag
print(find_flag())
ezASM
打开
可以看出每一部分都给了提示
将用户输入的字符串每个字符与 0x22 进行异或运算,然后与预设字符串进行比较。如果每个字符都匹配,则认为用户输入了正确的字符串。
脚本
c = [74, 69, 67, 79, 71, 89, 99, 113, 111, 125, 107, 81, 125, 107, 79, 82, 18, 80, 86, 22, 76, 86, 125, 22, 125, 112, 71, 84, 17, 80, 81, 17, 95, 34]
flag=''
for i in c:
flag+= chr(i^0x22)
print("".join(flag))
ezPYC
ezPYC的解题思路是把exe->pyc 让后在进行解答
下载后是个exe文件
我们直接拖进ida是看不了结果的
调用了四个函数 并且有的函数里继续调用了其他的函数根本无法解出
所以我们使用pyinstxtractor.pyhttps://github.com/extremecoders-re/pyinstxtractor/releases/tag/2023.12
把exe反编译成pyc后缀
反编译过后打开生成的文件夹
之后使用pycdc进行将Python pyc字节码转换回有效且我们可读的 Python 源代码
运行之后就可以看见python代码
把他复制到python里
这个代码的意思是让我们输入flag让后把flag进行ord转换为ascii码 与c[i%4]进行异或需要等于flag才能结束循环
chr的意思是把ascii码转换为字符 那直接逆向 input += chr(flag[i] ^ c[i % 4])就可以解出来flag
直接手撸代码
flag = [
87,
75,
71,
69,
83,
121,
83,
125,
117,
106,
108,
106,
94,
80,
48,
114,
100,
112,
112,
55,
94,
51,
112,
91,
48,
108,
119,
97,
115,
49,
112,
112,
48,
108,
100,
37,
124,
2]
c = [
1,
2,
3,
4]
input = ""
for i in range(0, 36):
input =input + chr(flag[i] ^ c[i % 4])
print(input)
运行出来之后加上}包裹上即是flag
->PWN方向
只会签到题
EzSignIn
直接nc连即可
->Crypto方向
密码和PWN都挨虐
ezRSA
经典RSA
引用
导入所需的模块和函数:from Crypto.Util.number import *
定义变量并将加密后的消息转换为长整数:m = bytes_to_long(flag)
生成两个随机素数:p = getPrime(1024)和 q = getPrime(1024)
计算公钥和私钥参数:n = p * q、phi = (p-1) * (q-1)和 e = 0x10001
使用公钥加密消息:c = pow(m, e, n)
使用私钥进行解密:首先,我们需要计算d,即私钥的指数。可以使用d = inverse(e, phi)来获取私钥的指数。
然后,使用私钥指数对密文进行解密:m_decrypted = pow(c, d, n)
最后,将解密后的长整数转换回原始消息的字节形式:flag_decrypted = long_to_bytes(m_decrypted)
打印解密结果:print(flag_decrypted)
脚本
from Crypto.Util.number import long_to_bytes, inverse
# 密文和公钥参数
c = 10529481867532520034258056773864074017027019578041866245400647840230251661652999709715919620810933437191661180003295923273655675729588558899592524235622728816065501918076120812236580344991140980991532347991252705288633014913479970610056845543523591324177567061948922552275235486615514913932125436543991642607028689762693617305246716492783116813070355512606971626645594961850567586340389705821314842096465631886812281289843132258131809773797777049358789182212570606252509790830994263132020094153646296793522975632191912463919898988349282284972919932761952603379733234575351624039162440021940592552768579639977713099971
e = 0x10001
p = 149127170073611271968182576751290331559018441805725310426095412837589227670757540743929865853650399839102838431507200744724939659463200158012469676979987696419050900842798225665861812331113632892438742724202916416060266581590169063867688299288985734104127632232175657352697898383441323477450658179727728908669
q = 116122992714670915381309916967490436489020001172880644167179915467021794892927977272080596641785569119134259037522388335198043152206150259103485574558816424740204736215551933482583941959994625356581201054534529395781744338631021423703171146456663432955843598548122593308782245220792018716508538497402576709461
# 计算私钥指数和解密密文
n = p * q
phi = (p - 1) * (q - 1)
d = inverse(e, phi)
m_decrypted = pow(c, d, n)
# 将解密后的长整数转换为字节形式
flag_decrypted = long_to_bytes(m_decrypted)
print(flag_decrypted)
->MISC方向
MISC还好
Sign in
用手机查看,把手机充电口对着自己,让后闭着眼用一个眼瞅,让后就能看到了,我是这样的
签到
关注公众号
来自星辰的问候
打开后查看是个萝莉
先拖进010发现什么也没有 提示六位弱密码 推测是带密码加密的图片隐写 使用到kali ->steghide
setghide info secret.png
看一下有个secret.zip不过如猜测一样需要密码
生成一个6位字典
尝试shell脚本爆破 若没权限先给755权限
脚本:
#bruteStegHide.sh
#!/bin/bash
for line in `cat $2`;do
steghide extract -sf $1 -p $line > /dev/null 2>&1
if [[ $? -eq 0 ]];then
echo 'password is: '$line
exit
fi
done
当时因为是弱密码还没爆破完让我手测出来了 密码是123456
拿出来
steghide extract -sf secret.jpg -p 123456
打开secret.zip是一张图片和一个view的文件
根据提示
搜索引擎发力,最后查到游戏是来自星辰
介绍:来自星尘 – 萌娘百科 万物皆可萌的百科全书 (moegirl.org.cn)
官网:https://exa.hypergryph.com/#homepage
打开给的文件是一个根据ttf生成文字
我们去官网拔下来woff让后转ttf 让后进行对比
https://exa.hypergryph.com/#homepage
让后一个一个对字母,这里我找了十几分钟,当时凌晨四点,我当时找的人都麻了
最后发现是welcome
simple_attack
打开看看
一个能打开 一个压缩包是加密的 一眼明文攻击 明文攻击之前我发过文章
明文攻击过后打开txt
打thm的时候见过base64 to file而且根据前面的data:image/png直接猜测是base64->图片
希儿希儿希尔
打开之后是个图片
进行长宽高修复,脚本:
修复完成后打开
拖进到winhex发现藏有文件
分离后是个txt
根据题目希尔希尔应该是希尔加密
搜索引擎搜索希尔加密需要什么
- 密文:即待解密的加密消息或文本。
- 密钥:希尔解密使用一个整数作为密钥,该密钥用于确定字母的移位数,与加密时所用的密钥相同。
- 字母表:希尔解密使用一个特定的字母表,通常是由26个大写字母组成的。
- 解密算法:希尔解密使用一种特定的算法,该算法根据密钥和字母表进行字母的逆向移位和替换。
字母表和算法都给了 我们只需要密文和密钥 密钥一般是整数 上面的txt给的是密文 我们现在缺2×2矩阵的数数字
推测zsteg隐写藏有隐藏信息 zsteg unhex.png -v
得出2×2矩阵是87 38
转换成大写用hgame包裹即可
暂无评论内容