首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

攻防世界 - Web - Level 3 | simple_js

  • 25-02-16 18:20
  • 2661
  • 5763
blog.csdn.net

关注这个靶场的其它相关笔记:攻防世界(XCTF) —— 靶场笔记合集-CSDN博客

0x01:考点速览

本题考察的是 JS 的代码审计,以下是你需要了解的知识点:

  • String.fromCharCode() -> 将接收的 Unicode 编码转换成字符或字符串

0x02:Write UP

从题目来看,本题考查的就是一个前端 JS 的代码审计:

进入靶场,直接弹出一个框框,让我们输入 password,这里我们随便输入:

提示我们是假的密码,这里我们忽略,查看目标代码:

好了,接下来就是紧张刺激的代码审计了,下面是 1.0 版本的审计结果:

  1.  

通过 1.0 的代码审计,我们发现了,其最终的输出和我们的输入没有任何关系,另外,它返回的结果也只是把预定的 pass 中的数组转换为字符后的结果,所以上面的代码完全可以简化为下面的样子:

  1.  

其输出的值,和嘲讽我们的值是一样,其实动动脑也能发现,pass 后面的两个数字为 “72,65”,72 可能没法一下子反应,但 65 不就是 A 的 ASCII 码值嘛。

Ok,分析完目标狗的很的加密函数,下面问题就是正确的密钥在哪里?我们可以发现,目标中存在一大串神秘的以 “\x” 开头的字符,并且也同样调用了 dechiffre () 函数,只不过没输出出来。

看到 “\x” 其实很简单就能联想到十六进制字符,那我们就尝试把十六进制字符转成字符串看看是啥(这里我使用的还是开发者工具里的 Console,里面会自动转换):

可以发现,其转换完成后也是一串数字,还是一串用 “,” 号分隔的数字,直接传入我们编写的解密函数中:

其实已经拿到 Flag 了,别忘了题目一开始的提示(Flag 的格式为 Cyberpeace {xxxxxxxxx})。

不知道为啥,写这道题目让我有一个感慨:一个东西,外围防御做的越好,说明他的内部越薄弱。本题用花里胡哨的代码扰乱我们的思路,但其实只做了两件事,把密码转成 ASCII 码值,再把 ASCII 码值转成十六进制,对 Pwn 熟悉的小伙伴估计不用看 JS 代码,凭借对密码格式的熟悉,两部就解出来了(上面写函数的过程完全可以省略的)。

0x03:参考资料

  • JavaScript fromCharCode () 方法

注:本文转载自blog.csdn.net的Blue17 :: Hack3rX的文章"https://blog.csdn.net/m0_73360524/article/details/144805534"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top