BUUCTF--[ACTF2020 新生赛]Include

2023-11-21 14:44
文章标签 buuctf include 新生 actf2020

本文主要是介绍BUUCTF--[ACTF2020 新生赛]Include,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、本题详解

2、延伸拓展


1、本题详解

访问题目链接 

有一个tips的链接,我们点击

请求了file,内容是flag.php的内容:Can you find out the flag?

尝试请求一下index.php

并没有发现什么信息

flag.php也没发现什么

尝试爆破一下它的目录和一些敏感文件名

但是遇到429报错,请求被服务器拒绝,因为发送了太多请求 

想起题目名叫Include,应该考察的是文件包含,因此尝试使用伪协议进行文件读取

首先使用 php://filter(用于读取源码)

这里直接尝试读取当前目录下的flag.php

进行base64编码输出,构造payload:

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

读取成功

进行base64解码

拿到 flag{f88d4b88-a1d0-4245-9c11-69da16affdac}

2、延伸拓展

关于php://filter的用法:

php://filter/read=convert.base64-encode/resource=[文件名]

读取文件源码(针对php文件需要base64编码)

当然有时候会对编码进行过滤和限制,这时我们就需要使用一些其他的编码方式

比如使用utf8和utf16

/?file=php://filter/convert.iconv.utf8.utf16/resource=flag.php

读取出来的内容就不需要解base64了

这里说一下这个iconv函数:完成各种字符集间的转换

比如 iconv("utf8","gbk",$string) :将字符串string 编码由utf8转变成gbk

以及convert.iconv.的用法:

convert.iconv.<input-encoding>.<output-encoding>
或者
convert.iconv.<input-encoding>/<output-encoding>

<input-encoding>和<output-encoding> 就是编码方式

常用的编码方式有:

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
EUC-JP*
SJIS*
eucJP-win*
SJIS-win*

比如我们的payload还可以是:

?file=php://filter//convert.iconv.SJIS*.UCS-4*/resource=flag.php

但是这种编码读取php文件似乎不行,不过我们可以读其他的,比如etc下的passwd

?file=php://filter//convert.iconv.SJIS*.UCS-4*/resource=/etc/passwd

尝试使用 php://input (用于执行PHP代码)进行代码执行:

回显 hacker!

应该是被检测了,我们读取一下index.php的源码看看

/?file=php://filter/convert.iconv.utf8.utf16/resource=index.php

确实过滤掉了很多伪协议,但是 php://filter 是可以使用的,这也是为什么我们能读取到flag.php

这篇关于BUUCTF--[ACTF2020 新生赛]Include的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/402999

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程

题目来源 NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem   [SWPUCTF 2021 新生赛]gift_F12 这个题目简单打开后是一个网页  我们一般按F12或者是右键查看源代码。接着我们点击ctrl+f后快速查找,根据题目给的格式我们搜索c

哈理工新生赛热身赛解题报告

本次热身赛6道题目,由于没有官方解题报告,自己写了一个山寨版的解题报告,希望对学弟学妹有所帮助 期中两到签到题该校OJ上没有挂出,我在田大神的帮助下a掉了其它四题,解题报告如下所示 线段 Time Limit: 1000 MSMemory Limit: 32768 K Total Submit: 10(6 users)Total Accepted: 7(6 users)Rating: S

兔子-(PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recommended: 'CGP'

由于在PHP最新的版本中增加了一个配置项目“request_order”,默认值为“GP”,这个存在一定的安全风险。这里我们建议用户将配置更改为“CGP” 可以在php的安装目录下找到php.ini配置目录,找到下面选项: request_order = "GP"  更改为 request_order = "CGP"   重启服务器后即可。 此

2、#include和#define

#include和#define 一、#include二、#define宏定义1、宏变量2、宏函数 一、#include #include是预处理指令,会将头文件直接替换到文件中。 // hello.hvoid foo() {int c = 0;int d = 1;}// hello.cpp#include "hello.h"int main() {int a =

#include <iostream>介绍

在C++编程中,#include <iostream> 是一个非常重要的预处理指令,用于引入输入输出流库。以下是对 #include <iostream> 的详细介绍: 1. 作用 #include <iostream> 指令的主要作用是使程序能够使用标准输入输出流的功能。它包含了定义输入输出流的类和函数,允许程序进行数据的输入和输出操作。 2. 主要功能 引入 <iostream> 后,

BUUCTF PWN wp--bjdctf_2020_babystack

第一步   checksec一下,该题是64位的,该题目大概率是一道栈溢出(因为题目里面提到了stack) 分析一下这个二进制保护机制: Arch: amd64-64-little 这表示二进制文件是为64位AMD处理器设计的,使用的是小端序(little-endian)格式。RELRO: Partial RELRO RELRO(Relocation Read-Only)是一种安全特性,旨

[SWPUCTF 2023 秋季新生赛]Pingpingping

这种是ctf中比较简单的一类题,主要解法基本上也就那些形式。 这道题我给它提出来主要是涉及了一下比较零散的知识点,觉得想要跟大家分享一下。 <?phphighlight_file(__FILE__);error_reporting(0);$_ping = $_GET['Ping_ip.exe'];if(isset($_ping)){system("ping -c 3 ".$_ping)