首页 > 其他分享 >百度杯_Code

百度杯_Code

时间:2023-05-13 16:14:36浏览次数:35  
标签:Code 代码 idea flag file php 百度

Code

题目内容:

考脑洞,你能过么?

加载进页面只有一个图片,检查url发现大概率是个文件包含。

img

直接把index.php放到参数后,访问发现存在一个加载错误的图片,查看源代码会发现是Base64编码的链接。

img

解码过后会发现是index.php的代码,然后进行代码审计。

img

其中的正则是将file中的非a-zA-Z0-9都变成空,然后将config匹配为_,然后包含file赋值给txt,最后输出。
这时候我们不知道flag文件在哪,再加上Can you find the flag file?这句话,说明flag可能就藏在哪里。刚才扫目录发现的./idea(.idea文件夹 .idea存放项目的配置信息,包括历史记录,版本控制信息等)等一系列的配置文件,结合代码中的Created by PhpStorm那么flag可能就在idea中,访问/.idea/workspace.xml果然发现了flag文件的名字。

img

那么结合刚才的代码审计我们可以构造payload:?jpg= ,因为_会被直接过滤掉,而config又会被替换成_。访问过后发现还是一个img标签,src里面包含这个base64编码,解码过后发现还是一个代码审计。

img

<?php
/**
 * Created by PhpStorm.
 * Date: 2015/11/16
 * Time: 1:31
 */
error_reporting(E_ALL || ~E_NOTICE);
include('config.php');
function random($length, $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz') {
    $hash = '';
    $max = strlen($chars) - 1;
    for($i = 0; $i < $length; $i++)	{
        $hash .= $chars[mt_rand(0, $max)];
    }
    return $hash;
}

function encrypt($txt,$key){
    for($i=0;$i<strlen($txt);$i++){
        $tmp .= chr(ord($txt[$i])+10);
    }
    $txt = $tmp;
    $rnd=random(4);
    $key=md5($rnd.$key);
    $s=0;
    for($i=0;$i<strlen($txt);$i++){
        if($s == 32) $s = 0;
        $ttmp .= $txt[$i] ^ $key[++$s];
    }
    return base64_encode($rnd.$ttmp);
}
function decrypt($txt,$key){
    $txt=base64_decode($txt);
    $rnd = substr($txt,0,4);
    $txt = substr($txt,4);
    $key=md5($rnd.$key);

    $s=0;
    for($i=0;$i<strlen($txt);$i++){
        if($s == 32) $s = 0;
        $tmp .= $txt[$i]^$key[++$s];
    }
    for($i=0;$i<strlen($tmp);$i++){
        $tmp1 .= chr(ord($tmp[$i])-10);
    }
    return $tmp1;
}
$username = decrypt($_COOKIE['user'],$key);
if ($username == 'system'){
    echo $flag;
}else{
    setcookie('user',encrypt('guest',$key));
    echo "╮(╯▽╰)╭";
}
?>

这里是有关加解密的代码,就是当我们访问http://eci-2ze76po4leyst90klq4m.cloudeci1.ichunqiu.com/fl3g_ichuqiu.php``是会在cookie中加上一个user,这里的user参数是加密过得,就是上面的decrypt函数,如果看不懂可以参考https://blog.csdn.net/rfrder/article/details/108542365`或者是其他的解题。

标签:Code,代码,idea,flag,file,php,百度
From: https://www.cnblogs.com/qianyuzz/p/17397544.html

相关文章

  • 百度杯_sql
    SQL这题很明确就是个sql注入,直接测试看下是啥注入。可以得知是一个数值型的注入。把关键字都放上去测试发现过滤了select,and,or,可以使用<>绕过使用o<>rderby测试只有三列直接构造payload:爆表0unionse<>lect1,group_concat(table_name),3frominformation_schema.......
  • Educational Codeforces Round 148 [Rated for Div. 2]A~C
    A#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=60;charc[N];voidrun(){ scanf("%s",c+1); intn=strlen(c+1); map<char,int>st; st[c[1]]++; for(inti=2;i<=n/2;++i) ......
  • Educational Codeforces Round 148 (Rated for Div. 2) A-D 题解
    比赛地址A.NewPalindrome题意:给一个回文串,判断是否能重新排成另一个回文串Solution存不同对的个数即可voidsolve(){ strings; cin>>s; intn=s.length(); set<char>st; for(inti=0;i<n/2;i++) { st.insert(s[i]); } if(st.size()>1)cout<<"YES\n"; els......
  • 小白学前端--001 VSCode安装+插件+字号调节
    工于利其事必先利其器,学前端工具选择很重要。一、VSCode是不错的选择。安装步骤不再赘述,一路下一步即可。vscode折叠左侧窗口,ctrl+B二、插架选择1、OpeninBrowser  (在代码中右键选择,在默认浏览器查看代码执行效果)2、Chinese(Simplified)(简体中文)......
  • 【二分查找】LeetCode 74. 搜索二维矩阵思路
    题目链接74.搜索二维矩阵思路思路因为矩阵中每行都按升序排列,且每行的第一个整数大于前一行的最后一个整数。所以整个矩阵其实就是一个大的升序的一维数组,可以使用二分查找的方法对“一维数组”进行搜索,只不过在获取元素的过程中需要进行一步一维索引到二维索引的映射。代码......
  • 【二分查找】LeetCode 162. 寻找峰值思路
    题目链接162.寻找峰值思路思路一个不严谨但是好理解的思路是:如果\(nums[mid]>nums[mid+1]\),那么\(nums[mid+1]\)肯定不是峰值,此时让\(right=mid\),从左边继续找峰值。反之则\(nums[mid]\)肯定不为峰值,让\(left=mid+1\)。代码classSolution{public......
  • 【二分查找】LeetCode 278. 第一个错误的版本
    题目链接278.第一个错误的版本思路二分查找代码publicclassSolutionextendsVersionControl{publicintfirstBadVersion(intn){intleft=1,right=n-1;while(left<=right){intmid=left+(right-left)/2;......
  • 代码管理器 CodeManager v1.2.1
    软件简介CodeManager代码管理工具,其主要功能是对代码段进行管理。该软件为免费版本,开放了全部功能,包括代码段的保存、代码段搜索以及一些常用网站收,欢迎使用!CodeManager采用ACCESS数据库保存代码段信息,与采用文件保存代码段信息的代码段管理软件相比具备搜索速度快、搜索结果......
  • #yyds干货盘点# LeetCode程序员面试金典:对称二叉树
    1.简述:给你一个二叉树的根节点root,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false2.代码实现:classSolution{publicbooleanisSymmetric(TreeNoderoot){returncheck(root,root);}......
  • Codeforces 1781H1 - Window Signals (easy version)
    很套路的一道题,把F1写了,F2感觉和F1gap不太大就懒得写了/shui首先需要明白大致思路:直接计算\(2^{nm-k}-1\)之所以会算重,是因为对于同一种图案,可能把它放在很多位置都是合法的。那么显然我们需要选一个代表元来把它的贡献唯一化,非常自然的想法就是把它固定在最左上角那个合......