0

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

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

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

4

1 回答 1

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

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

于 2013-06-14T17:06:57.753 回答