zoukankan      html  css  js  c++  java
  • web100

    下载题目给的附件,进去文本方式打开,发现是乱码
    然后看到最后有一个eval函数,接触过一句话木马的同学就应该很熟悉了,这是一个命令执行函数,执行_这个函数:

    显然在这里是没什么用的,于是我们把eval改为alert,再用浏览器打开源码,先把清晰的源码得到再说:

    此处我用的火狐浏览器,选中弹窗的ctrl+c一把,
    再把得到的清晰的源码粘贴在新的地方也好,或者web100里面也行,简单整理一下,源码如下:

    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 _
    

    浏览器再去访问此源码,发现有页面不正常,原来alert之后得到的源码javascript标签没了,补上便是:

    那么问题来了,该输入一些什么呢,还是要回到源码里去,这里又要提到正则表达式了:

    <javascript>
    function $(){
    var e=document.getElementById("c").value;if(e.length==16)      //变量长度为16
    if(e.match(/^be0f23/)!=null)      //^表示以什么开头,be0f23
    if(e.match(/233ac/)!=null)      //匹配233ac
    if(e.match(/e98aa$/)!=null)      //$表示以什么结尾,e98aa
    if(e.match(/c7be9/)!=null)      //匹配c7be9
    {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 _
    </javascript>
    

    对于变量e开头和结尾是固定了十位了,那么剩下6位,又要匹配233ac和c7be9,那么只能是如下情况,可谓刚刚好:

    如此拼凑出e=be0f233ac7be98aa

    得到flag:flag{it's_a_h0le_in_0ne}

  • 相关阅读:
    Head First设计模式读书笔记
    通过FileReference打开本地图片崩溃的解决方法
    Asea——轻量级的AS3模块配置与加载管理库
    AGAL反编译器
    [Stage3D]硬件加速的径向模糊
    C#的timer类问题~!
    c语言中的大数运算模块
    TRACERT命令及用法
    Linux用户和用户组的管理概述
    linux下挂载windows的共享文件目录ftp文件夹到/root/wind目录
  • 原文地址:https://www.cnblogs.com/sillage/p/13937050.html
Copyright © 2011-2022 走看看