攻防世界(WEB) simple_js

从这个标题来看,考的点应该是跟JavaScript有关的,肯定一进去必须要打开F12,因为html css JavaScript都是跟网页有关的

一进去叫我们输入密码,随便输一个看看

果不其然是错的(感觉自己傻傻的) ,点确定,然后打开F12找一下有没有线索

发现script里面有一大串代码,想必然肯定是获得密码的关键所在,为了看的舒服,我把代码复制到了visualcode里面 

 在这里我就将我的思路说一下,因为我之前没有接触过类似的题目,因此我使用的最笨的方法将这段代码解析出来的

首先不看函数,先看40行开始的一个函数调用,将一大串十六进制的字符串通过fromCharCode将编码转换成为了十进制数字密码(这里这个中括号用法我不太清楚,但是后面要用”,”隔开,如果不转换的话是没有“,”的,所以应该这里转为了十进制数字),传到dechiffre函数里面,具体函数什么用目前还不知道,然后42 43就是跳出那个密码窗口以及文字,对于我们获取密码帮助不大。

为什么是十六进制(可以上网搜哈哈),因为它是\x数字字母,具体可以看一下https://zhidao.baidu.com/question/10297593.html?qbl=relate_question_1&word=%5Cx%CA%C7%CA%B2%C3%B4

这是我用php写的一个转换成十进制的结果(因为visualcode输出默认十进制,所以我直接将数组输出即可)

 

 

现在开始看函数的作用,18行定义了一个pass变量的字符串里面包含一堆数字,19行将转换来的密码以‘,’为分隔符(split用法https://www.w3school.com.cn/js/jsref_split.asp)组成一组数组,20行与19行同理,只是tab2是外面传进来的,tab是里面定义的;21-23行注意j=11,k=11,n=18

24-30行是一个循环语句(条件是i=0;i<18(从右往左赋值);i依次增加1),fromCharCode作用就是跟之前反过来,将密码转换为Unicode编码,依次拼接起来,注意28当i=5的时候这个循环就直接全部结束了,因此24-30行是把前六个数字一次转换为Unicode编码拼接起来;31-35行根据条件当i>5并且i<18-1的数字转换为unico编码拼接起来,也就是说21-30将除了最后一个数字65,其余数字全部转换成了Unicode编码拼接成字符串。

这里循环中的o完全起的是误导作用,因为转换函数里面穿进去的都是tab2,外面却是tab,这一点一定要细心!!36-38行将最后一个数字也转换为了编码拼接在一起(说白了这一大段代码就是将字符串分割成数组,然后依次转换为Unicode编码依次拼接在一起,之所以分这么多模块那么多要求,就是为了吓我们)

仿照他给的代码来进行转换,当然技术好的可以直接在源代码修改,反正我技术不咋地,只能自己慢慢来,当我觉得密码已经是囊中之物的时候

 

!!!!!!假的密码,后面还有一个haha!!!!

我的天,又找不到出题人,我觉得我可以一凳子丢过去了!!

没办法只能继续找 ,发现tab根本没用上,难道tab直接就是密码??只能试一试了

 改一下数组就行,继续运行,勇敢牛牛不怕困难

好!出来一个像样的东西了,直接复制粘贴到密码栏 

 又是一个HAHA把我弄傻了!!,这还不对么!

突然我发现题目有一个细节

是的你没有想错,Flag是 Cyberpeace{786OsErtk12} 

里面的xxxx就是我们得出的东西,根本不用输入密码了……

题目果然有点东西哈,拐弯抹角的。

又长见识了,不过还是有的地方不太懂,还需要自己多琢磨一下,继续给自己打气!!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值