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}

  • 相关阅读:
    008 第八篇:爬虫实战(数据可视化之pyecharts)
    案例一 微信聊天机器人
    008 第八篇:爬虫实战
    007 第七篇:分布式爬虫
    006 第六篇:Scrapy框架
    005 第五篇:爬虫高性能相关
    004001 第四篇:存储库简单版之mongodb,redis,mysql
    003 第三篇:解析库之re、beautifulsoup、pyquery
    002 第二篇:请求库之requests,selenium
    001 第一篇:爬虫基本原理
  • 原文地址:https://www.cnblogs.com/sillage/p/13937050.html
Copyright © 2011-2022 走看看