Django Raw Query SQL注入显示攻击

时间:2013-06-14 17:03:02

标签: mysql sql django sql-injection

我正在尝试用Django编写一个可以为课堂目的显示SQL注入的网站。但是当我尝试利用查询时,没有任何东西被返回。我正在使用MYSQL数据库

peopledata = people.objects.raw("select * from people where name = \"%s\" "%input
result = list(peopledata)

我尝试在输入字段中使用"; show tables; --"; --,但没有显示任何内容。有没有办法显示被利用的数据?

1 个答案:

答案 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'); --

注意:将这些查询适当地应用于您的数据库。必要时使用单/双引号等。