您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页攻防世界-Web-NaNNaNNaNNaN-Batmaner

攻防世界-Web-NaNNaNNaNNaN-Batmaner

来源:二三娱乐
题目信息:
image.png

知识点:js代码(eval函数,alert函数,splice函数),正则,代码审计

下载附件,是一个文件,没有后缀,用sublime打开看看


image.png

是js代码,那么我们将文件后缀改为html,用浏览器打开查看:


image.png

是一个输入框,但输入什么都没有反应,还是继续尝试分析js代码
审计代码可以看到eval函数执行了_变量中的内容也就是' '中的内容,但是,要注意的是,它并没有执行$()函数,仅仅执行了字符串而已(从而导致乱码),因而页面html页面没有任何显示,只显示了input标签的内容,但是我们想让源代码正常显示出来,不进行执行,那么,我们就用到了alert弹窗(将eval函数改为alert),将乱码的$()函数源码完整显示出来:

image.png
eval() 函数:可计算某个字符串,并执行其中的的 JavaScript 代码。
alert() 函数:用于显示带有一条指定消息和一个 确定按钮的警告框。

整理后源码为:

function $()
{
var e=document.getElementById("c").value;
if(e.length==16)
if(e.match(/^be0f23/)!=null)
if(e.match(/233ac/)!=null)
if(e.match(/e98aa$/)!=null)
if(e.match(/c7be9/)!=null)
    {   var t=["fl","s_a","i","e}"];
        var n=["a","_h0l","n"];
        var r=["g{","e","_0"];
        var i=["it'","_","n"];
        var s=[t,n,r,i];
    for(var o=0;o<13;++o)
        {
         document.write(s[o%4][0]);
         s[o%4].splice(0,1)
        }
    }
}
document.write('<input id="c"><button onclick=$()>Ok</button>');
delete _
方法一:审计代码,因此我们要满足关键变量e的正则条件
e.length==16
e.match(/^be0f23/)!=null
e.match(/233ac/)!=null
e.match(/e98aa$/)!=null
e.match(/c7be9/)!=null

^表示开头一定要匹配到be0f23,$表示结尾一定要匹配到e98aa,其它的只要匹配到就行,没有位置要求

于是我们构造e的值:be0f233ac7be98aa

将构造的e输入最初的html页面的输入框中得到flag


image.png image.png
方法二:直接将下面代码复制到控制台执行也能得到flag
var t=["fl","s_a","i","e}"];
        var n=["a","_h0l","n"];
        var r=["g{","e","_0"];
        var i=["it'","_","n"];
        var s=[t,n,r,i];
    for(var o=0;o<13;++o)
        {
         document.write(s[o%4][0]);
         s[o%4].splice(0,1)
        }
image.png
参考:

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务