当前位置: 首页 > news >正文

【攻防世界新手入门】simple_js

小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )

该题来自攻防世界新手练习区的 GFSJ0480。

在这里插入图片描述
访问靶场,输入任意密码,弹出错误窗口并加载空页面,使用检查器查看对应源代码,使用 JavaScript 脚本编写判断逻辑:

在这里插入图片描述

//将一个逗号分隔的字符编码字符串解密为明文字符串
function dechiffre (pass_enc) {var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";var tab  = pass_enc.split(',');var tab2 = pass.split(',');var i, j, k, l = 0, m, n, o, p = "";i = 0;j = tab.length;k = j + (l) + (n = 0);n = tab2.length;for (i = (o = 0); i < (k = j = n); i++) {o = tab[i - l];p += String.fromCharCode((o = tab2[i]));if (i == 5) break;}for (i = (o = 0); i < (k = j = n); i++) {o = tab[i - l];if (i > 5 && i < k-1) p += String.fromCharCode((o = tab2[i]));}p += String.fromCharCode(tab2[17]);pass = p;return pass;
}
//相当于 String.fromCharCode 方法,但方括号表示法可以在运行时动态改变
String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));h = window.prompt('Enter password');
alert(dechiffre(h));

根据代码逻辑,可以知道,不论循环执行情况如何,错误窗口都会弹出,由这两个循环中的 String.fromCharCode 可知我们需要进行 Unicode 字符串转码来获取 flag;而循环外部定义的十六进制编码字符串很有可能是最终的 flag。对此,我们编写 Python 脚本来实现对该密钥的破译:

s = ("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31""\x30\x37\x2c\x34\x39\x2c\x35\x30")
print(s)   # 转换为 ASCII 码
# ASCII values of characters in the string: 55,56,54,79,115,69,114,116,116,107,49,s = s.split(",")    # 分割字符串
flag = ""
for i in s:flag += chr(int(i))    # Unicode 码转换为字符
print(flag)

执行脚本,输出 786OsErtk12 ,按题目给出的 flag 形式包裹起来,即 Cyberpeace{786OsErtk12} ,直接提交即可。

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JVM2-JVM组成、字节码文件、类的生命周期、类加载器
  • NetSuite AI 图生代码
  • 多目标应用:基于MOPSO的移动机器人路径规划研究(提供MATLAB代码)
  • RTX5源码全家桶集成emWin6.40, Modbus主从,含FreeRTOS版, 探讨一种移植第3方组件通用方法以及使用注意事项2024-08-30
  • 【电子数据取证】Linux软件包管理器yum和编辑器vim
  • 【最全最详细】RPC与HTTP的区别
  • kali——nmap的使用
  • Centos7的x86上构建arm镜像docker
  • 【HuggingFace Transformers】Bert Model的应用
  • Qt/C++地址转坐标/坐标转地址/逆地址解析/支持百度高德腾讯和天地图
  • 时间格式--cotroller传递时间参数
  • RESP图形化界面远程连接虚拟机Redis教程
  • RepoAgent:基于大型语言模型的开源框架,主动生成、维护和更新代码文档
  • Amazon Bedrock 实践:零基础创建贪吃蛇游戏
  • [Algorithm][综合训练][体育课测验(二)][合唱队形][宵暗的妖怪]详细讲解
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • C++11: atomic 头文件
  • CSS3 变换
  • HTML5新特性总结
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PAT A1017 优先队列
  • Selenium实战教程系列(二)---元素定位
  • springMvc学习笔记(2)
  • TCP拥塞控制
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 高程读书笔记 第六章 面向对象程序设计
  • 后端_ThinkPHP5
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 老板让我十分钟上手nx-admin
  • 批量截取pdf文件
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 我这样减少了26.5M Java内存!
  • 怎样选择前端框架
  • 1.Ext JS 建立web开发工程
  • PostgreSQL之连接数修改
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # 计算机视觉入门
  • (day 12)JavaScript学习笔记(数组3)
  • (Forward) Music Player: From UI Proposal to Code
  • (LeetCode) T14. Longest Common Prefix
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (接口封装)
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (离散数学)逻辑连接词
  • (南京观海微电子)——COF介绍
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)setTimeout 和 setInterval 的区别
  • .gitignore文件设置了忽略但不生效
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net MVC + EF搭建学生管理系统
  • .NET MVC之AOP
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET/C# 项目如何优雅地设置条件编译符号?