# Web
# LazyDogR4U
这是道代码审计题,访问:
http://d37a87870f.lazy.r4u.top/www.zip
拿到网站源码
可还行,可以看到用户名和密码
这个 testuser开头是 0e 可能会有机会可乘,去看一下登录相关的代码。
果然这里用了 == 弱比较,找一个密码的 md5 值为 0e 开头的密码就行
使用 testuser QNKCDZO 成功登录
再次查看源码
发现这个地方有机会实现变量覆盖
自己弄了个php试了一下
我们可以控制 get 成这样的值:_POST[_SESSION][username] = 1
执行 foreach 时,第一次循环,此时 $_request 是 _GET,然后 $_k 是 _POST,所以是 ${_POST}[_SESSION][username] = 1;
然后执行到第二次 foreach,此时 $_request 为 _POST,$_k 就是数组的键,自然就是 _SESSION,所以执行的就是 ${_SESSION}[‘username’]=1
这样就覆盖了 $_SESSION 了
但是这里还有一个过滤操作,所以需要双写 SESSION 绕过过滤
最后的 payload 就是这样:_POST[_SESSISESSIONON][username] = admin
hgame{R4U~|s-4-LazY~doG}
# Post to zuckonit
Blog XSS,直接一把梭。结果因为自己没有 XSS 平台倒腾了一晚上
这是计算Code的程序:
根据观察,发现payload会被倒序,所以把 XSS 程序提前倒序
这是我的payload(已做一定隐私保护处理,不能直接使用):
发到平台上长这样:
查看源码:
成功嵌入网页
用程序跑出 Code,Submit。
去后台看数据,成功拿到管理员的token
浏览器插件改一下 Cookies ,用 Postman之类也行。
访问http://zuckonit.0727.site:7654/flag
成功拿到flag:
hgame{X5s_t0_GEt_@dm1n’s_cOokies.}
# 200OK!!
分析源码,得出接口 /server.php
请求头包含 Status 且值的范围为1~15
先看下有没有注入漏洞
先用1测试正常返回
尝试1’
返回异常
尝试1 and 1 = 1
尝试1 and 1 = 2
返回数据无差异,判断非数字型漏洞
尝试1‘ #
返回正确
尝试1’ and 1 = 2#
返回错误
据此推断为字符型注入
使用联合查询获得数据库名(50’union select database())
因为只会返回查询结果的第一条,所以要保证第一个查询无结果,同时有简单的sql注入过滤,所以要使用双写绕过过滤
50’ununionion/**/seleselectct/**/database()#
查询表名
50’ununionion/**/seleselectct/**/table_name/**/frfromom/**/information_schema.TABLES/**/wwherehere/**/TABLE_SCHEMA=‘week2sqli’#
查询字段名
50’ununionion/**/seleselectct/**/column_name/**/frfromom/**/information_schema.columns/**/wwherehere/**/TABLE_SCHEMA=‘week2sqli’/**/and/**/table_name=‘f1111111144444444444g’#
50’ununionion/**/seleselectct/**/ffffff14gggggg/**/frfromom/**/f1111111144444444444g#
hgame{Con9raTu1ati0n5+yoU_FXXK~Up-tH3,5Q1!!=)}
# Liki的生日礼物
尝试弱密码登录 admin admin登录成功
看样子已经有人来兑换过券了
尝试重新注册新的账号,并且尝试”条件竞争“漏洞。
浏览器发送一个购买请求
将购买请求塞给burp,
使用 Burp 的 Intruder 并发请求
发送完成后回到商城页面查看:
刷出55张
兑换成功
hgame{L0ck_1s_TH3_S0lllut!on!!!}
# Crypto
# signin
拿到一个 Python 程序
然后同样是安装库的问题,gmpy2 库在我电脑上编译不了,可能是什么库少装了。Python 高版本解决方式:
在:https://www.lfd.uci.edu/~gohlke/pythonlibs/
下载gmpy2安装包
选择合适的版本,下载并安装:
pip install “whl包名”
正片开始,这个模运算还没接触过,自己弄了一晚上,最后让Liki小姐姐教了好久模运算才大概弄明白
先利用费马小定理化简加密公式
c = (a ** (p-1)) % p * a * m % p
c = a * m % p
c = am(mod p)
然后得出m = c/a(mod p)
因为模运算中的除法操作是靠逆元实现的,所以c/a在模运算中应该写成c*(a的逆元)
这里利用 gmpy2 中的函数 invert(a, p) 求逆元,所以总体程序是这样
运行,得flag
hgame{M0du1@r_m4th+1s^th3~ba5is-Of=cRypt0!!}
# gcd or more?
cipher = pow(s2n(FLAG), 2, n)
百度得知 rabin 加密的操作和本题相同
查看rabin解密流程
写程序:
hgame{3xgCd~i5_re4l1y+e@sy^r1ght?}
# WhitegiveRSA
RSA 直接上程序
做这一题配环境配了好久,python3.8 装 Crypto 库死活不行
安装方式:
flag:
hgame{w0w~yOU_kNoW+R5@!}
# The Password
这题就是 xor 加强版,Python 的移位操作和 C艹 还有一些不同,导致我循环位移语句‘((x » right) ^ (x « (63-right)))’反复翻车
后来用 Z3 库的时候也因为各种奇奇怪怪的操作翻车
不过最后还是写出了解密程序,具体就不多说了
hgame{l1ne0r_a1gebr0&is@1mpor10n1^1n$crypto}
# MISC
# Tools
拿到手一个加密的压缩包和一个俄罗斯套娃的图片
查看文件属性
!LyJJ9bi&M7E72*JyD
根据首位的感叹号特征 推测是base91编码
解码后得到:
39,164,108,224,214,24,102,72,78,67,219,196,27,67
发现不对劲,然后看了下压缩包文件名是F5
搜了一下居然存在F5隐写这种东西,我直接好家伙。
然后上github下载了一下工具,成功解码
e@317S*p1A4bIYIs1M
成功解开压缩包
。。。果然是套娃啊。这回学聪明了 直接搜索 Steghide
同样操作拿到密码
直接就冲!
再冲!
解压 冲!
解压 冲!JPHS?
解压
最后就是把获得的四个二维码缝合起来
懒得开 Photoshop 了,就这么缝合吧。反正都能扫描
hgame{Taowa_is_N0T_g00d_but_T001s_is_Useful}
# Telegraph:1601 6639 3459 3134 0892
这题拿到手的第一反应就是频谱能量。最早接触音频隐写是两年前回形针的解密活动
拿到手马上导入 Au,查看频谱
可以看出来提示我们去看 850Hz,马上杀过去,看到长长短短莫斯电码
-.– — ..- .-. ..-. .-.. .- –. .. … —… ….- –. —– —– -.. … —– -. –. -… ..- - -. —– - ….- –. —– —– -.. – .- -. —– …– —-. …– .—- —– -.- ..
可惜自己想考业余无线电的资格证一直没有去考
拿到在线转换器转换一下
YOURFLAGIS4G00DS0NGBUTN0T4G00DMAN039310KI
转成flag:
hgame{4G00DS0NGBUTN0T4G00DMAN039310KI}
# Hallucigenia
拿到的也是图片,几条路子过一遍,最后拿 Stegsolve 看一下。
马上就看出图片中藏的东西
二维码扫描出来是这样:
gmBCrkRORUkAAAAA+jrgsWajaq0BeC3IQhCEIQhCKZw1MxTzSlNKnmJpivW9IHVPrTjvkkuI3sP7bWAEdIHWCbDsGsRkZ9IUJC9AhfZFbpqrmZBtI+ZvptWC/KCPrL0gFeRPOcI2WyqjndfUWlNj+dgWpe1qSTEcdurXzMRAc5EihsEflmIN8RzuguWq61JWRQpSI51/KHHT/6/ztPZJ33SSKbieTa1C5koONbLcf9aYmsVh7RW6p3SpASnUSb3JuSvpUBKxscbyBjiOpOTq8jcdRsx5/IndXw3VgJV6iO1+6jl4gjVpWouViO6ih9ZmybSPkhaqyNUxVXpV5cYU+Xx5sQTfKystDLipmqaMhxIcgvplLqF/LWZzIS5PvwbqOvrSlNHVEYchCEIQISICSZJijwu50rRQHDyUpaF0y///p6FEDCCDFsuW7YFoVEFEST0BAACLgLOrAAAAAggUAAAAtAAAAFJESEkNAAAAChoKDUdOUIk=
末尾是=,而且字符串含有+和/,说明是base64.
解码后:
并不是文字字符串
题目中提到:“我们不仅弄错了他的上下,还颠倒了它的左右。”
看样子还存在逆序。
发现末尾有 GNP ,是 PNG 的倒序,看样子这是把 PNG 转成 base64 存了。
写个程序存一下文件
翻正就拿到了flag
hgame{tenchi_souzou_dezain_bu}
# DNS
这题主要考 DNS 相关的知识,拿到的是 Wireshark 抓到的包,其中有 DNS 请求,看了下是查询 flag.hgame2021.cf
再往下是 HTTP 请求,看了下网页内容
实际上这一题不用看这个也能想到和TXT记录有关。
然后打开 CMD ,输入 nslookup -q=txt flag.hgame2021.cf
hgame{D0main_N4me_5ystem}