From 27ae3669e2395ff4d71753fac02e828ffa5568d3 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sat, 18 Nov 2023 23:40:48 -0500 Subject: [PATCH] [F] Fix imgs --- content/posts/2023-11-18 CyberSci Canada Writeup.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/posts/2023-11-18 CyberSci Canada Writeup.md b/content/posts/2023-11-18 CyberSci Canada Writeup.md index 8901c38..047c340 100644 --- a/content/posts/2023-11-18 CyberSci Canada Writeup.md +++ b/content/posts/2023-11-18 CyberSci Canada Writeup.md @@ -22,11 +22,11 @@ tags: [ctf] 啊所以难道给我的这套代码登录甚至没有验证密码的吗 (╯’ – ‘)╯︵ ┻━┻ -![[2023-11-18 22-02 2.png|欣赏一下屎山代码]] +![[./Assets/2023-11-18 CyberSci Canada Writeup/2023-11-18 22-02 2.png|欣赏一下屎山代码]] 看看源代码 lib.php 确实数据库密码验证逻辑写得乱七八糟,数据库直接 string concat,密码甚至没 hash... 好直接让 GPT4 重写了一遍登录和注册这两个函数,然后 PoC 就失效了,拿分拿分 🌚 -![[2023-11-18 22-03.png|GPT4 帮我修好了!]] +![[./Assets/2023-11-18 CyberSci Canada Writeup/2023-11-18 22-03.png|GPT4 帮我修好了!]] (不过我至今没弄懂 PhP 要怎样把 log 打到能看到的地方... 打比赛的时候试了几个不同的方法都看不到 log 就算了算了直接把 curl hydev.org/say 写进去了,发到 /say 的东西会转发到我的 Telegram 上hhhh @@ -34,7 +34,7 @@ tags: [ctf] 第一个好简单。第二个攻击的请求乍一看好像没什么问题,但是仔细看看就会发现 PoC 机注册的帐号的名字和请求提交的 JWT Token 名字不一样然后还莫名过签证验证了... 为什么呢? -![[image_2023-11-18_21-58-35 1.png|第二个攻击的 Log]] +![[./Assets/2023-11-18 CyberSci Canada Writeup/image_2023-11-18_21-58-35 1.png|第二个攻击的 Log]] 看一眼代码确实,签名居然不是密码学签名,而是直接把请求 JWT 里面的东西 hash 了一遍,验证签名和 hash 相等???🫠 这种客户端能生成的东西还算签名吗?算了交给 GPT4 去改,果然改完就过了。 @@ -48,19 +48,19 @@ tags: [ctf] 磨刀不误砍柴工,先把本地 Go 环境和依赖装上,把 SSL cert 挪到该放的地方,带缓存的编译重跑就只需要不到一秒了。 -![[2023-11-18 22-52.png]] +![[./Assets/2023-11-18 CyberSci Canada Writeup/2023-11-18 22-52.png]] ## Attack 1 第一道题非常非常简单,跑起来之后看 HTTP 访问日志马上就看到了一条野生 SQL 语句 👀 原来要修的是 SQL 注入。看看代码,main 里面定义了这个 `/shop/items/:item` 节点的函数是 DescribeItem(),把整个函数拷给 GPT4 重写拿分() -![[2023-11-18 22-56.png|GPT4 不知道今天帮了我多少忙]] +![[./Assets/2023-11-18 CyberSci Canada Writeup/2023-11-18 22-56.png|GPT4 不知道今天帮了我多少忙]] ### Attack 2 第二道题我觉得是这五道题里面最难的,因为攻击方法并不明显。整个日志看起来都非常正常,我为了让日志看起来更整洁还隐藏了签名验证的部分,日志里实现的操作都是用户正常使用会用到的。看了超级超级久还没发现问题,但是把签名打出来发现了不同请求的签名长度不一样,所以猜猜可能是签名验证的问题就去检查了一下签名验证的代码,然后发现了这堆鬼东西: -![[2023-11-18 23-01.png|他们自己实现了一个 ASN 验证,后面是五百行的我都看不懂的纯正密码学]] +![[./Assets/2023-11-18 CyberSci Canada Writeup/2023-11-18 23-01.png|他们自己实现了一个 ASN 验证,后面是五百行的我都看不懂的纯正密码学]] 不懂就不要随便自己实现加密算法啊啊啊 (╯’ – ‘)╯︵ ┻━┻