python - 编写注入漏洞代码 sqlite3
问题描述
我正在编写一个 python 文件来查询,该文件容易受到 sql 注入的影响。
此处,在执行 python 文件时,对其进行约束和约束的表名和列名作为命令行参数给出。
这是pyhon文件:
import sqlite3
import sys
con = sqlite3.connect("univ1.db")
cur = con.cursor()
table = sys.argv[1]
column = sys.argv[2]
constraint = sys.argv[3]
cur.execute( """SELECT * FROM {} WHERE {} = '%s'""".format(table, column)% constraint)
rows = cur.fetchall()
for row in rows:
print(','.join([str(val) for val in row]))
这段代码被认为容易受到 sql 注入的攻击,因此执行以下命令预计会从数据库中删除指定的表,同时打印建筑物为 blah 的教室的详细信息。
python3 query.py classroom building "blah'; DROP TABLE INSTRUCTOR; --'"
但是由于 cursor.execute 一次只能执行一个命令,因此程序终止并发出警告。
如何允许执行多个命令。另请注意, fetchall 函数应返回相关数据。
我为什么要问这个?
这是作业的一部分,我应该在其中编写注入禁用和注入易受攻击的查询文件。
解决方案
事实证明,python sqlite 完全不会受到相关攻击的攻击。
推荐阅读
- perl - 如何在 Perl 中以命令行选项格式将列表作为输入
- mysql - 如何将集合存储在数据库中?
- azure-devops - Azure devops rest api,如何修改一个值
- java - RabbitMQ 在发送消息到交换时返回 MQ_UNBOUND_QUEUE
- spring - 从 PropertySource Springboot 迭代属性
- compression - 将 DeflaterOutputStream 转换为 ByteArrayOutPutStream
- time-series - 如何提高 rnn 和 LSTM 的准确率?
- javascript - html输入值总是字符串吗?
- python - 如何让我的程序输入从相机拍摄的图像?
- python - Python 包,最简单的例子不起作用。ModuleNotFoundError:没有名为“simple_package”的模块。十亿次