攻防世界-Web-新手-simple_js

【题目描述】

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

【附件】

在线场景

【过程及思路】

打开在线场景后弹出输入框:

尝试输入了几次后,发现都是这个结果。

老样子,先查看网页源码。

经过代码审计,发现很坑的一件事:输入到输入框的内容经过js的函数window.prompt来保存到变量h中,之后网页直接将h经过dechiffre()这个函数一顿操作,然后把一个不知道什么东西返回并弹出,最后弹出的显然是上面图中的那个结果,中间并未进行任何验证

也就是说,无论你输入什么都不会得到哪怕一丝有用的结果。

进一步说,本题的解法根本不是输入一个正确的密码然后得到flag

这可怎么办?

注意到有一行很长的代码,里面有一些\x,表示的16进制的数。

我们将它还原一下..

转换代码(Python):

code = "\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"

strlist = code.split(',');

ans = ""

# print(strlist)

for asc in strlist:

    s = chr(int(asc))

    ans += s

print(ans)

得到:786OsErtk12

这个看起来像是flag了,拼入题目格式中,答案正确。

本题通过js代码审计、ascii编码还原,绕过假的、不可达的密码路径,从源码中得到我们想要得到的信息。

同时,也给我们一种新的思路:答案并不一定在看起来正常的走法上,可能需要你绕到背后

【答案】

 Cyberpeace{786OsErtk12}

如果文章对你有帮助,就动动手指点赞、喜欢、支持一下咖啡猫吧,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值