【愚公系列】2023年05月 攻防世界-Web(Cat)

文章讨论了命令执行漏洞的原理和常见原因,强调了编程时进行输入数据过滤和验证的重要性。提到了防止此类漏洞的策略,如使用参数化查询、禁止执行系统命令、权限限制和安全编程。文章还通过一个Django框架下的案例,展示了如何利用文件传递读取数据库文件,从而揭示潜在的安全风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

命令执行漏洞是指攻击者通过向受攻击的系统发送恶意代码或输入,使其执行未经验证的操作命令,从而获取系统的敏感信息或控制受攻击的系统。这种漏洞通常发生在 Web 应用程序或网络服务中,攻击者可以利用这些漏洞在系统中执行任意代码,从而导致系统崩溃或被入侵。

命令执行漏洞的原因通常是由于编程人员没有对输入数据进行有效的过滤和验证,允许攻击者向系统发送恶意数据。攻击者利用这些漏洞通常使用操作系统(如Linux、Windows)的系统命令,例如wget、curl、bash等输入,使得系统执行未经验证的命令。

为了防止命令执行漏洞的发生,开发人员应该在编程时采取以下措施:

  1. 输入数据过滤和验证:开发人员应该对应用程序或网络服务接收到的所有输入数据进行过滤和验证,以确保输入的数据不会包含恶意代码。

  2. 使用参数化的查询方式:开发人员应该使用参数化查询方式来预防 SQL 注入攻击,这样就可以防止攻击者通过恶意数据来执行未经验证的 SQL 命令。

  3. 禁止执行系统命令:开发人员应该禁止应用程序或网络服务执行系统命令,例如wget、curl、bash等,除非这些命令是经过严格的验证才被允许执行。

  4. 应用程序或网络服务的权限限制:开发人员应该限制应用程序或网络服务的权限,确保应用程序只能访问必要的信息和资源。

  5. 安全编程实践:开发人员应该采用安全编程实践来编写应用程序或网络服务,例如使用安全框架和安全代码库。

一、Cat

1.题目

在这里插入图片描述

2.答题

尝试执行命令,127.0.0.1&&dir、127.0.0.1&&ls、127.0.0.1|ls均被屏蔽,所以无法入手,至此,没有收获到任何东西,唯一收获到的是网站使用的是url编码能够传入。

传递%80会出现报错,url编码使用的是16进制,80也就是128,ASCII码是从0-127,所以这个时候会报错。
在这里插入图片描述
发现是Django框架,所以根据Django的目录,我们使用@进行文件传递,对文件进行读取之后还会把内容传给url参数,如果像上面一样有超出解析范围的编码的时候就会得到错误信息。

搜索关键信息:database、settings等
在这里插入图片描述
发现database,访问database.sqlite3文件

http://61.147.171.105:51270/?url=@/opt/api/database.sqlite3

在这里插入图片描述
flag为:WHCTF{yoooo_Such_A_G00D_@}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公搬代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值