繁体   English   中英

编写注入漏洞代码 sqlite3

[英]Writing Injection vulnerable code 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 注入的影响,因此执行以下命令预计会从数据库中删除指定的表,并打印教室的详细信息,其建筑物是废话。

python3 query.py classroom building "blah'; DROP TABLE INSTRUCTOR; --'"

但是由于 cursor.execute 一次只能执行一个命令,程序会以警告终止。
如何允许执行多个命令。 还要注意 fetchall 函数应该返回相关数据。
我为什么要问这个?
这是我应该编写禁用注入和注入易受攻击的查询文件的作业的一部分。

事实证明,python sqlite 完全无法抵御相关攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM