【发布时间】:2020-11-19 15:58:13
【问题描述】:
我不知道如何使这种 SQL 注入在 SQLite 中工作。我在 Python 中使用一个函数来连接数据库并插入一个字符串。
我的“database.db”有两个表:“反馈”和“用户”。
反馈表有 1 列:消息。
users 表有 2 列:用户名和密码。
def send_feedback(feedback):
conn = sqlite3.connect("database.db")
curs = conn.cursor()
curs.execute("INSERT INTO feedback VALUES ('%s')" % (feedback))
print(curs.fetchall())
conn.close()
我知道执行函数允许我对数据库进行单个查询,所以我不能使用“;”至 进行多个查询。
我尝试过的是让字符串看起来像这样:
a') SELECT password FROM users --
feedback = "INSERT INTO feedback VALUES ('a') SELECT password FROM users --')"
但这给了我以下错误:
sqlite3.OperationalError:靠近“SELECT”:语法错误
所以我尝试使用 UNION 命令:
a') UNION SELECT password FROM users --
feedback = "INSERT INTO feedback VALUES ('a') UNION SELECT password FROM users --')"
这个可行,但 fetchall 函数返回一个空列表。
【问题讨论】:
标签: python sqlite sql-insert sql-injection