繁体   English   中英

Python SQLite3注入

[英]Python SQLite3 injection

我想知道在我的python程序中我是故意做到的,以便可以在程序中使用注入。 如果尝试使用此enter a name: name; DROP TABLE test; enter a name: name; DROP TABLE test; 它不起作用并正常输入。 如果我正在使用,请enter a name: name' DROP TABLE test; 它说出输入名称的地方显然是一个变量。

c.execute("INSERT INTO test VALUES('%s')" % test)
sqlite3.OperationalError: near "DROP": syntax error

如果我用

enter name: test'"DROP TABLE test;"

c.execute("INSERT INTO test VALUES('%s')" % test)
sqlite3.OperationalError: near ""DROP TABLE test;"": syntax error

我只想知道如何操作,所以我只能在程序中尝试一下并防止它(我知道您应该使用?)

VALUES子句需要用圆括号括起来,因此您需要输入以下内容:

name'); DROP TABLE test; --

--开始注释,以防止原始SQL语句中的最后一个')被解释。)

而且Python的sqlite3.Cursor.execute()仅执行一个语句,因此这种注入不起作用。 您的程序将需要使用executescript()代替。
(但是,如果您具有SELECT,则可以使用它来抑制以下任何过滤条件,例如AND password='...' 。)

暂无
暂无

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

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