[英]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.