simple_js

攻防世界 web新手 simple_js(代码审计)
题目描述:
题目

打开题目环境后,显示输入密码:
环境

随意输入一个密码,如“password”:
试输入

打开源代码进行审计:
源代码

接下来是一些知识点(我自己这么认为的):
1.function定义函数
2.var 是变量类型
3.spilt 是一种以“,”为标志切割字符串,将其存入字符数组的函数
4.prompt 在屏幕上打印,并接受输入
5.\x25\x35等是16进制,可按照ASCII码表转换为字符
6.fromCharCode 可以接受Unicode值转换为字符
7.alert 应该是在屏幕上输出

代码审计结果:
审计结果

头脑风暴分析一下:
1.dechiffre函数以一串字符pass_enc为参数,返回一个字符串pass。
2.pass_enc分割并存入tab中,但在两个for循环中,由tab赋的值都会再被tab2覆盖掉。
3.tab2的值来源于pass的分割,但pass是函数中中定义好的。
4.因此无论dechiffre函数的参数是什么都返回的是FAUX PASSWOR HAHA。
5.调用dechiffre函数的两个位置一是String【”fromCharCode”】(dechiffre(~~)),二是alert( dechiffre(h))。
6.但一处因为参数不对,未执行,二处根据输入的password返回结果,但总为FAUX PASSWOR HAHA。

结论:flag应当与为执行的String【”fromCharCode”】(dechiffre(~~))有关系
简单改写代码:
改写代码
(此处可以使用python,c++等改写代码,就是将\x25\x35那一串转化为字符)
运行结果:
运行结果

得到flag,按照提示以Cyberpeace{xxxxxx}的格式提交,这道题就完成了。