NSSCTF-Web题目19(数据库注入、文件上传、php非法传参)

目录

[LitCTF 2023]这是什么?SQL !注一下 !

1、题目

2、知识点

3、思路

[SWPUCTF 2023 秋季新生赛]Pingpingping

4、题目

5、知识点

6、思路


[LitCTF 2023]这是什么?SQL !注一下 !

1、题目

2、知识点

数据库注入,联合查询

3、思路

首先,题目有提示我们参数为id,而且告诉我们闭合方式

先正常输入看看回显

加上闭合方式,?id=1))))))

结果没有回显,加上注释符

?id=1))))))--+

结果有正常回显,说明当前的闭合方式是正确的

使用联合查询语句 union select 

?id=1)))))) union select 1,2--+

这里有两个回显位置

1、接下来判断库名

?id=1)))))) union select 1,database()--+

### nssctf POST注入漏洞利用及防御方法 #### 背景介绍 在网络安全(CTF)中,SQL 注入是一种常见的攻击方式。特别是当涉及到 `POST` 请求时,由于数据通常隐藏于表单提交之中,使得这种类型的注入更具隐蔽性和挑战性[^3]。 #### 漏洞原理 对于无列名注入而言,在某些情况下,即使数据库查询语句中未明确指定列名称,仍然可以通过特定构造的数据包来实现信息泄露或控制逻辑绕过。这类问题往往源于开发者未能充分验证用户输入的安全性,尤其是在处理来自客户端的动态参数时更为明显。 #### 利用实例 假设存在一个简单的登录接口 `/login.php` 接受两个字段:用户名 (`username`) 和密码 (`password`) 的 `POST` 提交。如果服务器端代码直接拼接这些值而不做任何过滤,则可能允许如下形式的恶意请求: ```http POST /login.php HTTP/1.1 Host: vulnerable-site.com Content-Type: application/x-www-form-urlencoded username=admin' --&password=anything ``` 上述例子展示了如何通过闭合原始 SQL 语句并注释掉后续部分的方式达到非法操作的目的。实际比中可能会更加复杂,需要结合具体环境调整 payload。 #### 防御措施 为了有效防止此类攻击的发生,建议采取以下策略: - **预编译语句** 使用参数化查询代替字符串连接构建 SQL 命令; - **最小权限原则** 确保应用程序运行账户仅拥有完成其功能所需的最低限度权利; - **输入验证** 对所有外部输入进行全面校验,拒绝不符合预期模式的内容; - **错误消息管理** 不向用户提供详细的内部异常报告,以免暴露敏感结构信息; - **定期更新依赖库** 及时修补已知的安全缺陷,如 CVE 编号所记录的各种漏洞案例[^2]; ```python import sqlite3 def safe_query(username, password): conn = sqlite3.connect('example.db') cursor = conn.cursor() # Using parameterized query to prevent injection attacks sql = "SELECT * FROM users WHERE username=? AND password=?" result = cursor.execute(sql, (username, password)).fetchone() conn.close() return result is not None ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值