HGAME-WEEK1
WEB
2048*16
这题应该是过关了就能拿到flag,一开始尝试修改增加的分数,发现一下子分数飚的太高了,然后达不到32768,于是想着,直接把游戏的状态,从一开始的!1改成1,就实现了,游戏还没开始就结束了。
Select Courses
有一个获取课程的api
这里能修改是否已经满了,还有现在的状态(是否已选)
一开始尝试修改这个的返回包,将满的true改成false,然后去选课,发现依然不行,后面尝试并发,条件竞争。
这两个包同时并发,然后一定概率就会让课程成功选择(有点玄学)
最后还是把全部课程选完了
hgame{w0W_!_1E4Rn_To_u5e_5cripT_^_^}
Bypass it
这个直接点注册点不了
题目提示说
所以我把js禁用,他就无法把我拉回登录页面了
随便注册一个账号
然后回去登录
ezHTTP
根据提示
使用burp修改
然后拿到一个jwt的token
去解密
{
“F14g”: “hgame{HTTP_!s_1mP0rT4nt}”
}
Jhat
Jhat是用来解析java堆转储文件的
这里使用OQL可以执行对象查询,有点像SQL
这里根据hint知道需要rce
可以想到
a=java.lang.Runtime.getRuntime().exec(‘ls’)
通过Java的Runtime类执行ls命令,exec方法返回一个Process对象
b=new java.io.InputStreamReader(a.getInputStream(), “UTF-8”)
然后将Process对象的输入流(即ls命令的标准输出)转换成字符流,且指定字符集为UTF-8
c=new java.io.BufferedReader(b)
创建了BufferedReader对象,它包装了InputStreamReader
c.readLine()
最后通过readLine方法读取命令输出的第一行
这里可以一直点
发现flag就在当前目录下
hgame{04a2ec563685d9a0d2b7479af93738d417a2e129}
REVERSE
ezIDA
直接拖入IDA,查找字符串
ezUPX
先搜索关键字符串
这里分析得出是跟0x32异或后的结果相等即正确
将待解密数据转化为C无符号字符数组(十六进制)
写解密脚本
得出
省去后面多余的
VIDAR{Wow!Y0u_kn0w_4_l1ttl3_0f_UPX!}
ezASM
是一个汇编语言,翻译一下就是一个异或
Python写解密脚本
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] # 逆运算 decrypted_c = [char ^ 0x22 for char in c] # 将解密后的字符转换为 ASCII 字符 decrypted_string = ‘’.join(chr(char) for char in decrypted_c) print(decrypted_string)
hgame{ASM_Is_Imp0rt4nt_4_Rev3rs3}
EZPYC
这是一个反编译python的题
编写解密脚本
CRYPTO
ezRSA
题目给了leak1和leak2
通过leak1和leak2计算n(RSA模数),RSA模数是两个大素数p和q的乘积
n = leak1 * leak2
然后用n来计算p和q
def factorize(n, leak1, leak2):
g = GCD(leak1, n)
q = n // g
return g, q
p, q = factorize(n, leak1, leak2)
计算欧拉函数
phi = (p - 1) * (q - 1)
计算私钥d它是公钥指数e的模phi(n)的逆元素
d = inverse(0x10001, phi)
最后用得到的n和d来解密密文,得到明文后转换为字节打印出来:
m_decrypt = pow(c, d, n)
flag_decrypted = long_to_bytes(m_decrypt)
print(“Decrypted Flag:”, flag_decrypted.decode())
hgame{F3rmat_l1tt1e_the0rem_is_th3_bas1s}
MISC
SignIn
提示换个视角,我直接发到手机上,然后眼睛对着充电口的方向即可得出flag
hgame{WOW_GREAT_YOU_SEE_IT_WONDERFUL}
EzSignIn
来自星尘的问候
看题目是一个游戏的名字
来自星尘
根据提示弱加密,使用stegseek爆破工具爆破
stegseek –crack -sf secret.jpg -wl /usr/share/wordlists/dirb/big.txt
得到一张密文图片,应该是要去官网找每个字符对应的字母或数字
这里还有个工具
点开script文件查看应该是让我们上传一个字体文件
本来想直接看表来查询对应字符的,但是不全面,就去官网再看看线索了
本来想着将字体文件直接上传到给的工具里面,但是这里的格式是woff2,工具要求是ttf文件,就不转了,直接对应手敲下来。
对应下来flag为hgame{welc0me!}
希儿希儿希尔
题目给了一张花了的图片,提示修复图片
Binwalk分离
到这里解密希尔密码要一个矩阵密钥
再次查找图片中隐藏的信息
测试发现是LSB隐写
得到密钥为8738
Hgame{DISAPPEARINTHESEAOFBUTTERFLY}
simple_attack
看起来是明文攻击
将没有密码的图片拉出来单独压缩
e423add9 375dcd1c 1bce583e
把data:image/png;base64,去掉