草庐IT

BugKu---------备份是个好习惯

r1ng_13 2023-04-18 原文

title: BugKu---------备份是个好习惯
date: 2021-06-23 16:48:44
description: 前言:零度安全搭建博客后的第N篇文章
top:
categories: BugKu刷题
tags:

  • 网络安全
  • BugKu

BugKu---------备份是个好习惯

默默成长的web狗,BugKu,那个菜鸡又回来刷题了。

题目

解题思路

​ 题目上说是备份是个好习惯,所以我们第一要想到使用disearch这个工具去扫描指定的URL

解题过程

  1. 打开kali,运行disearch这个py脚本,执行payload

    dirsearch.py -u http://114.67.246.176:13080/
    

  2. 访问备份的链接,获取到备份文件

    http://114.67.246.176:13080/index.php.bak
    

  3. 打开备份文件,发现是一个PHP代码

    <?php
    /**
     * Created by PhpStorm.
     * User: Norse
     * Date: 2017/8/6
     * Time: 20:22
    */
    
    include_once "flag.php";
    ini_set("display_errors", 0);
    $str = strstr($_SERVER['REQUEST_URI'], '?');
    $str = substr($str,1);
    $str = str_replace('key','',$str);
    parse_str($str);
    echo md5($key1);
    
    echo md5($key2);
    if(md5($key1) == md5($key2) && $key1 !== $key2){
        echo $flag."取得flag";
    }
    ?>
    
  4. 上段代码的意思是需要两个不同的key不同,但是两个key的md5的值是相同的

    1. 使用kekeyy数组进行绕过,md5函数无法处理数组,这样就会返回两个NULL,而两个NULL的md5值是一样的,但是传入的key值可以不同。

      http://114.67.246.176:13080/?kekeyy1[]=aaa&kekeyy2[]=bb
      

    2. 使用==这个的比较漏洞,如果两个字符经过md5加密后的值是0exxxxx形式,在科学计数法中会被认为是0*10的几次方的,结果是0。此时,md5加密值相等,但是key值是不等的,下面是md5加密后是0exxxxx形式的。

      240610708
      0e462097431906509019562988736854
      QNKCDZO
      0e830400451993494058024219903391
      s878926199a
      0e545993274517709034328855841020
      s155964671a
      0e342768416822451524974117254469 
      s214587387a
      0e848240448830537924465865611904
      s214587387a
      0e848240448830537924465865611904 
      s878926199a
      0e545993274517709034328855841020 
      s1091221200a
      0e940624217856561557816327384675 
      s1885207154a
      0e509367213418206700842008763514
      s1502113478a
      0e861580163291561247404381396064
      s1885207154a
      0e509367213418206700842008763514
      s1836677006a
      0e481036490867661113260034900752  
      s155964671a
      0e342768416822451524974117254469  
      s1184209335a
      0e072485820392773389523109082030  
      s1665632922a
      0e731198061491163073197128363787
      s1502113478a
      0e861580163291561247404381396064
      s1836677006a
      0e481036490867661113260034900752  
      s1091221200a
      0e940624217856561557816327384675 
      s155964671a
      0e342768416822451524974117254469
      s1502113478a
      0e861580163291561247404381396064
      s155964671a
      0e342768416822451524974117254469
      s1665632922a
      0e731198061491163073197128363787 
      s155964671a
      0e342768416822451524974117254469 
      s1091221200a
      0e940624217856561557816327384675 
      s1836677006a
      0e481036490867661113260034900752  
      s1885207154a
      0e509367213418206700842008763514  
      s532378020a
      0e220463095855511507588041205815
      s878926199a
      0e545993274517709034328855841020
      s1091221200a
      0e940624217856561557816327384675
      s214587387a
      0e848240448830537924465865611904
      s1502113478a
      0e861580163291561247404381396064
      s1836677006a
      0e481036490867661113260034900752 
      s1665632922a
      0e731198061491163073197128363787
      s878926199a
      0e545993274517709034328855841020
      s878926199a
      0e545993274517709034328855841020
      s155964671a
      0e342768416822451524974117254469
      s214587387a
      0e848240448830537924465865611904
      s214587387a
      0e848240448830537924465865611904
      s878926199a
      0e545993274517709034328855841020
      s1091221200a
      0e940624217856561557816327384675
      s1885207154a
      0e509367213418206700842008763514
      s1502113478a
      0e861580163291561247404381396064
      s1885207154a
      0e509367213418206700842008763514
      s1836677006a
      0e481036490867661113260034900752
      s155964671a
      0e342768416822451524974117254469
      s1184209335a
      0e072485820392773389523109082030
      s1665632922a
      0e731198061491163073197128363787
      s1502113478a
      0e861580163291561247404381396064
      s1836677006a
      0e481036490867661113260034900752
      s1091221200a
      0e940624217856561557816327384675
      s155964671a
      0e342768416822451524974117254469
      s1502113478a
      0e861580163291561247404381396064
      s155964671a
      0e342768416822451524974117254469
      s1665632922a
      0e731198061491163073197128363787
      s155964671a
      0e342768416822451524974117254469
      s1091221200a
      0e940624217856561557816327384675
      s1836677006a
      0e481036490867661113260034900752
      s1885207154a
      0e509367213418206700842008763514
      s532378020a
      0e220463095855511507588041205815
      s878926199a
      0e545993274517709034328855841020
      s1091221200a
      0e940624217856561557816327384675
      s214587387a
      0e848240448830537924465865611904
      s1502113478a
      0e861580163291561247404381396064
      s1091221200a
      0e940624217856561557816327384675
      s1665632922a
      0e731198061491163073197128363787
      s1885207154a
      0e509367213418206700842008763514
      s1836677006a
      0e481036490867661113260034900752
      s1665632922a
      0e731198061491163073197128363787
      s878926199a
      0e545993274517709034328855841020
      

      构造payload如下

      http://114.67.246.176:13080/?kekeyy1=240610708&kekeyy2=QNKCDZO
      

有关BugKu---------备份是个好习惯的更多相关文章

  1. 通过 MacPorts 的 RubyGems 是个好主意吗? - 2

    从MB升级到新的MBP后,Apple的迁移助手没有移动我的gem。我这次是通过macports安装ruby​​gems,希望在下次升级时避免这种情况。有什么我应该注意的陷阱吗? 最佳答案 如果你想把你的gems安装在你的主目录中(在传输过程中应该复制过来,作为一个附带的好处,会让你以你自己的身份运行geminstall,而不是root),将gemhome:键设置为您在~/.gemrc中的主目录中的路径. 关于通过MacPorts的RubyGems是个好主意吗?,我们在StackOverf

  2. ruby - 使用 ruby​​ 进行套接字编程是个好主意吗? - 2

    我选择的语言是Ruby,但因为Twitter,我知道Ruby不能处理很多请求。将它用于套接字开发是个好主意吗?或者我应该像Twitter开发人员那样使用像erlang或haskell或scala这样的函数式语言吗? 最佳答案 我工作的公司使用Ruby作为我们的网站。到目前为止,我们已经处理了超过34,000,000,000次点击。我们每天处理大约10,000,000次点击没有问题。每天的点击量峰值已超过40,000,000次。可扩展性取决于很多因素。例如,与读取相比,我们的数据库执行的写入比例高得不成比例。虽然大多数网站执行大约90

  3. ruby-on-rails - 如果只有一个存在,是否有用于返回第一个数组元素的 ruby​​ 习惯用法? - 2

    如果数组只包含一个值,我想返回数组的第一个元素。目前,我使用:vals.one??vals.first:vals.presence因此:vals=[];vals.one??vals.first:vals.presence#=>nilvals=[2];vals.one??vals.first:vals.presence#=>2vals=[2,'Z'];vals.one??vals.first:vals.presence#=>[2,"Z"]是否有内置的东西可以做到这一点,或者是否有更好的设计考虑?我的用例是特定的,涉及知道从方法(将实现上述代码)中期望什么的演示者。如果这些演示者将所有返回

  4. ruby-on-rails - 在 Rails 中动态重新加载路由是个坏主意吗? - 2

    我有一个正在编写的应用程序,我允许管理员为页面、类别等添加别名,我想根据别名使用不同的Controller/操作(不重定向,我'我发现render实际上并没有调用该方法。我只是渲染了模板)。我已经尝试了捕获所有路由,但我并不热衷于引发和捕获每次都会抛出的DoubleRender异常。我想出的解决方案是在服务器启动时动态生成路由,并在创建/更新/销毁别名时使用别名模型的回调重新加载路由。这是我的routes.rb中的代码:Alias.find(:all).eachdo|alias_to_add|map.connectalias_to_add.name,:controller=>alias

  5. ruby - sleep() 对于作业调度应用程序的主循环来说是个好主意吗 - 2

    我正在为我的工作用Ruby编写一个作业调度应用程序(主要是为了以给定的频率使用各种协议(protocol)移动文件)我的主循环是这样的:whiletruedo#somecodetolaunchtheproperjobsleepCONFIG["interval"]end它的工作就像一个魅力,但我不确定它是否足够安全,因为该应用程序可能在运行cpu密集型软件的服务器上运行。是否有另一种方法可以做同样的事情,或者sleep()对我来说是否足够安全? 最佳答案 每当我觉得需要阻塞时,我都会使用事件循环;通常是libev。这是一个Ruby绑定

  6. ruby - 局部变量以下划线开头是好习惯吗? - 2

    我刚接触Ruby,来自Java和C/C++环境。在用Ruby编写第一个小项目时,我不知何故习惯了让所有局部变量都以下划线开头。我想我这样做的主要动机是更好的可读性和与方法调用的区别。由于原则上只有三种类型的变量($global、@instance和local),绝大多数变量开始带下划线。我不太确定,这是好事还是坏事。此外,在许多其他语言中,下划线会被替换为其他字符。除了通常的CamelCase和/或下划线分隔之外,是否有关于变量命名的最佳实践?专业“rubyists”的习惯是什么?当我选择前导下划线时,我是否忽略了一些通用的Ruby约定?编辑感谢所有答案和建议。这对我帮助很大。下面是答

  7. ruby - 从 'next' 返回值是个坏主意吗? - 2

    应该很简单。我想,从阅读thisblogpost我可以在我的next命令之后立即返回一些东西:如果axis_range=="test",下一个“新值”我真正想做的是在同一行记录下一个原因:next@logger.info('跳过这个项目是为了好玩')unless(elephants.size>0)我在rubydoc上找不到任何关于next用法的讨论。.该代码肯定有效。我意识到我可以用unlessblock来做到这一点,但是那行代码太简洁了。两个问题:有更好的文档吗?next的这种用法是不是有点奇怪而不是“ruby-ish”? 最佳答案

  8. ruby-on-rails - 将表示逻辑放在 Controller 中是 Ruby 中的一个好习惯吗? - 2

    一些推荐[1]建议你使用代替但问题是您必须在代码中的某处包含决策逻辑。我的理解是将决定放在template中比controller更好,因为它使您的Controller更干净。是否正确?有没有更好的方法来处理这个问题?http://robots.thoughtbot.com/post/27572137956/tell-dont-ask 最佳答案 您不是第一个对此感到疑惑的人。如果View和Controller应该几乎没有逻辑,并且模型应该与表示无关,那么表示逻辑属于哪里?事实证明,我们可以使用一种称为装饰器模式的旧技术。这个想法是用

  9. ruby-on-rails - rails 中是否内置了对默认值替换习惯用法的支持? - 2

    我经常编写代码以在遇到nil/空值时提供默认值。例如:category=order.category||"Any"#ORcategory=order.category.empty??"Any":order.category我即将扩展try方法来处理这个习语。category=order.try(:category,:on_nill=>"Any")#ORcategory=order.try(:category,:on_empty=>"Any")我想知道Rails/Ruby是否有一些方法来处理这个习惯用法?注意:我正在尝试消除||的重复/或/?基于运算符的习语。本质上,我正在寻找与try方

  10. ruby - 内省(introspection)模块类时 "#map(&proc)"习惯用法如何工作? - 2

    呈现成语我找到了一个interestingbutunexplainedalternative到一个公认的答案。该代码在REPL中显然有效。例如:moduleFooclassBardefbazendendendFoo.constants.map(&Foo.method(:const_get)).grep(Class)=>[Foo::Bar]但是,我并不完全理解这里使用的成语。特别是,我不明白&Foo的用法,它似乎是某种闭包,或者#grep的这种特定调用如何对结果进行操作。解析成语到目前为止,我已经能够解析其中的点点滴滴,但我并没有真正看到它们是如何组合在一起的。以下是我认为对示例代码的理

随机推荐