我正在尝试用Django编写一个可以为课堂目的显示SQL注入的网站。但是当我尝试利用查询时,没有任何东西被返回。我正在使用MYSQL数据库
peopledata = people.objects.raw("select * from people where name = \"%s\" "%input
result = list(peopledata)
我尝试在输入字段中使用"; show tables; --
和"; --
,但没有显示任何内容。有没有办法显示被利用的数据?
答案 0 :(得分:0)
您的输入应为any_name OR'x'='x'
或any_name OR name IS NOT NULL
无论第一个条款是什么,第一个输入都将保证该子句为真。
第二个查询将返回数据库中的每个记录,而不是返回您搜索的名称。这表明存在很大的安全风险。如果返回的数据是保密的(ID SSN),则用户现在已经可以访问他/她不应该查看的数据。
另一个例子是:
any_name; DROP TABLE people; --
和
any_name; INSERT INTO people('email','passwd','login_id','full_name')
VALUES ('steve@email.com','hello','steve','Steve LastName'); --
注意:将这些查询适当地应用于您的数据库。必要时使用单/双引号等。