[HGAME]2024 WEEK1 writeup笔记

前言

29号开始的 31号域开始打,打了一天到2月1 WEEK1就卡瓶颈了

整个参赛人数接近2千,写笔记记录一下一些脚本和解题思路

图片[1],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[2],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

注:本文章在比赛结束前已开启文章密码保护,未泄露解题思路,比赛结束后正式开放文章

->Web方向

Bypass it

图片[3],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[4],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

点击注册

图片[5],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

尝试burpsuite爆破无果,题目说不让禁用js 但那是迷惑人的,最后禁用js就可以注册成功

图片[6],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

禁用后注册即可

图片[7],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

注册成功直接登录就能拿到flag

ez http

图片[8],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开后发现需要添加refrer头跟进访问此网站

图片[9],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

Burpsuite开盒即用中文版:

抓包发送到重放器里面,且添加头部文件

图片[10],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

让后这里说需要添加ua标识 直接复制在改上去

图片[11],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

有实战渗透的的操作了(出的题就是好!,因为一些学校的edu还有公司网站的后台即使账号密码正确也需要本地或者内网访问 此时就需要添加头文件跟进访问)

用到burpsuite的403 bypass插件

图片[12],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[13],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

flag就隐藏在authorzation里面 我们去百度搜索 bearer token解码

图片[14],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

拿到flag

Select Coureses

图片[15],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开是五个课程

图片[16],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

这时候我们去选 选不了一点

图片[17],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[18],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

抓包 如果发送到攻击模块里他是不会选课成功的 只有full=0的时候才会选课成功

图片[19],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

一直点击发送 当full为0的时候就可以选课成功

图片[20],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

多发几个重放器来回点

图片[21],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

当五个都选完之后点击选完了就可以弹出flag

->Reverse方向

先主动分析让后丢gpt写脚本解

下面是一些常用的快捷键

图片[22],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

ezIDA

图片[23],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

主函数都不用看 点击view->string查看一下字符串就能找到flag

图片[24],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

ezUPX

图片[25],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

相关工具和工具使用http://t.csdnimg.cn/99IJG

脱壳等就不演示 sorry当时忘了截图了

UPX加壳过了,Exeinfo PE检查一下是有壳的(题目也直接给了UPX是已经加壳的,如果直接拖进ida看到的都是伪代码

用upx进行脱壳

图片[26],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

脱完之后让后确保一下再次检查有无壳 之后拖进ida

图片[27],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

在主函数里查看

图片[28],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

丢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的字节

图片[29],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

我们把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())
图片[30],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

ezASM

图片[31],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开

图片[32],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

可以看出每一部分都给了提示

将用户输入的字符串每个字符与 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))
图片[33],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

ezPYC

图片[34],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

ezPYC的解题思路是把exe->pyc 让后在进行解答

下载后是个exe文件

图片[35],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[36],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

我们直接拖进ida是看不了结果的

图片[37],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

调用了四个函数 并且有的函数里继续调用了其他的函数根本无法解出

所以我们使用pyinstxtractor.pyhttps://github.com/extremecoders-re/pyinstxtractor/releases/tag/2023.12

把exe反编译成pyc后缀

图片[38],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

反编译过后打开生成的文件夹

图片[39],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

之后使用pycdc进行将Python pyc字节码转换回有效且我们可读的 Python 源代码

https://github.com/zrax/pycdc

图片[40],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

运行之后就可以看见python代码

图片[41],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

把他复制到python里

图片[42],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

这个代码的意思是让我们输入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

图片[43],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

->PWN方向

只会签到题

EzSignIn

直接nc连即可

图片[44],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[45],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

->Crypto方向

密码和PWN都挨虐

ezRSA

经典RSA

图片[46],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[47],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

引用

导入所需的模块和函数: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)
图片[48],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

->MISC方向

MISC还好

Sign in

图片[49],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[50],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

用手机查看,把手机充电口对着自己,让后闭着眼用一个眼瞅,让后就能看到了,我是这样的

签到

图片[51],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

关注公众号

来自星辰的问候

图片[52],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开后查看是个萝莉

图片[53],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

先拖进010发现什么也没有 提示六位弱密码 推测是带密码加密的图片隐写 使用到kali ->steghide

setghide info secret.png

看一下有个secret.zip不过如猜测一样需要密码

图片[54],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

生成一个6位字典

图片[55],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

尝试shell脚本爆破 若没权限先给755权限

图片[56],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

脚本:

#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
图片[57],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开secret.zip是一张图片和一个view的文件

图片[58],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[59],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

根据提示此图片的alt属性为空;文件名为20240201105047185.png

搜索引擎发力,最后查到游戏是来自星辰

介绍:来自星尘 – 萌娘百科 万物皆可萌的百科全书 (moegirl.org.cn)

官网:https://exa.hypergryph.com/#homepage

图片[60],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开给的文件是一个根据ttf生成文字

图片[61],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

我们去官网拔下来woff让后转ttf 让后进行对比

https://exa.hypergryph.com/#homepage

让后一个一个对字母,这里我找了十几分钟,当时凌晨四点,我当时找的人都麻了

最后发现是welcome

图片[62],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

simple_attack

图片[63],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开看看

图片[64],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网
图片[65],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

一个能打开 一个压缩包是加密的 一眼明文攻击 明文攻击之前我发过文章

明文攻击过后打开txt

图片[66],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打thm的时候见过base64 to file而且根据前面的data:image/png直接猜测是base64->图片

图片[67],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

希儿希儿希尔

图片[68],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

打开之后是个图片

图片[69],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

进行长宽高修复,脚本:

修复完成后打开

图片[70],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

拖进到winhex发现藏有文件

图片[71],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

分离后是个txt

图片[72],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

根据题目希尔希尔应该是希尔加密

搜索引擎搜索希尔加密需要什么

  1. 密文:即待解密的加密消息或文本。
  2. 密钥:希尔解密使用一个整数作为密钥,该密钥用于确定字母的移位数,与加密时所用的密钥相同。
  3. 字母表:希尔解密使用一个特定的字母表,通常是由26个大写字母组成的。
  4. 解密算法:希尔解密使用一种特定的算法,该算法根据密钥和字母表进行字母的逆向移位和替换。

字母表和算法都给了 我们只需要密文和密钥 密钥一般是整数 上面的txt给的是密文 我们现在缺2×2矩阵的数数字

推测zsteg隐写藏有隐藏信息 zsteg unhex.png -v

图片[73],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

得出2×2矩阵是87 38

图片[74],[HGAME]2024 WEEK1 writeup笔记,网络安全爱好者中心-神域博客网

转换成大写用hgame包裹即可

------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞17 分享
评论 抢沙发
头像
善语结善缘,恶语伤人心
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情图片

    暂无评论内容