[SWPUCTF 2021 新生赛]include

题目链接:NSSCTF | 在线CTF平台

涉及工具:hackbar

涉及知识点:文件包含,PHP伪协议

解题思路:

1.打开靶机:

根据提示,启动hackbar(点击f12)并传入“file”参数:

2.审计代码:

注:该 PHP 脚本接受一个名为 `file` 的 GET 参数,并尝试包含该参数所指定的文件。

①`ini_set("allow_url_include","on");`: 这一行尝试设置 PHP 配置 `allow_url_include` 为 `on`,这意味着允许通过 URL 来包含外部文件,这通常被认为是一个安全风险,因为它可能导致远程代码执行漏洞。

②`header("Content-type: text/html; charset=utf-8");`: 设置响应头部,指示浏览器以 HTML 格式解析响应内容。

③ `error_reporting(0);`: 禁止显示 PHP 错误信息,这是出于安全考虑,以防止泄漏敏感信息。

④`$file=$_GET['file'];`: 从 GET 请求参数中获取名为 `file` 的值,并存储到 `$file` 变量中。

⑤`if(isset($file)){...}else{...}`: 检查是否存在 `file` 参数。如果存在,执行 `if` 代码块,否则执行 `else` 代码块。

⑥`show_source(__FILE__);`: 如果存在 `file` 参数,则显示当前文件的源代码。这可能是为了让攻击者了解服务器上的代码结构。

⑦ `echo 'flag 在flag.php中';`: 输出一条提示信息,提示标志(flag)位于 `flag.php` 文件中。

⑧`include_once($file);`: 尝试包含 `$file` 变量所指定的文件。这是一个潜在的安全风险,因为攻击者可能利用此处的代码包含漏洞来包含恶意文件,并执行其中的恶意代码。

注:这段代码存在严重的安全风险,特别是通过 `allow_url_include` 设置为 `on`,允许通过 URL 包含外部文件,可能导致远程代码执行漏洞。同时,未对用户输入进行充分验证和过滤,可能导致路径遍历攻击(directory traversal)或远程文件包含漏洞(remote file inclusion)。

3.审计得知,`allow_url_include` 设置为 `on`,且目标文件为“flag.php”我们可以利用PHP伪协议来攻击:

①php://filter:/resource=flag.php

获取指定文件源码

②与包含文件结合时,php://filter流会被作为php文件执行,但我们只是为了提取目标文件(此处为flag.php),为了避免执行后看不到文件,对其进行编码,让其不被执行:

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

注:此处有个坑,出题人多打了几个换行,所以需要滚动到网页下方才能看到:

4.base64解码:

①可以直接浏览器搜索“base64在线解码工具”进行解码:

②也可以自己用python编写脚本进行解码,以下是我写的一个base64编码解码脚本:

import base64

while True:

     choice = input("请选择操作(1:加密,2:解密,0:退出)\n")

     if (choice == '1'):

          encodestr = input("请输入需要加密的内容:")

          a = base64.b64encode(encodestr.encode('utf-8'))

          print("加密结果为:",a)

     elif (choice == '2'):

          try:

               jiemi = input("请输入需要解密的内容:")

               decodestr = base64.b64decode(jiemi)

               b = decodestr.decode('utf-8')

               print("解密后内容如下:")

               print(b)

          except Exception as e:

               print(e)

     elif (choice == '0'):

          exit(0)

     else:

          print('选项错误!')

效果如下:

注:需要一个依赖库“base64”,若未安装过的请在终端输入“pip install base64”进行安装

5.知识总结:

①php伪协议:

Php://filter/convert.base64-encode/resource=*.php的使用

②利用hackbar传参问题(该知识点在我另一篇文章详细介绍过,包括hackbar的使用,有需要的师傅自行查阅,博客链接为:【[SWPUCTF 2021 新生赛]jicao - CSDN App】http://t.csdnimg.cn/CAZ0X

③base64编码解码.

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值