如何解决SQL语法问题——转义单引号和百分号
我正在尝试开设有关网络安全的在线课程,其中一个问题是尝试执行 sql 注入。由于语法问题和我认为的转义序列,我一直无法弄清楚。
def query():
return "sd UNION SELECT password FROM Users WHERE admin = 1"
def main():
conn = sqlite3.connect(dbname)
cursor = conn.cursor()
response = cursor.execute("SELECT body FROM Tasks WHERE name='%s' and body LIKE
'%%%s%%'" % (username,query())).fetchall()
print('Found entries:')
for r in response:
print(r[0])
我只能编辑 query() 函数,当我运行此代码时,sql 语句不返回任何内容。最后运行的命令是:SELECT body FROM Tasks WHERE name='bob' and body LIKE '%sd UNION SELECT password FROM Users WHERE admin = 1%'
在我意识到引号和 '%' 导致了问题之后,我试图以某种方式逃避它们,但还没有成功。我已经尝试过这个 query = "sd'' UNION SELECT password FROM Users WHERE admin = 1''"
和许多其他类似的组合来逃避它,但没有成功。要清除所有列都存在,因为如果我更改单元测试并将代码运行为 "SELECT body FROM Tasks WHERE name='bob' and body LIKE 'sd' UNION SELECT password FROM Users WHERE admin = 1"
我会得到密码但是带有 '%%%s%%'
的准备好的语句版本由于某种原因不允许我通过测试.我应该如何编写查询,以便在 SQLite python 中转义 % 和单引号?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。