2015-05-09 122 views
-1

我已经创建了用于测试SQL注入的代码。使用SQL注入实现DROP TABLE

<?php 
mysql_connect('localhost', 'root', ''); 
mysql_select_db("test"); 
$id = $_POST['data']; 
$query = "SELECT * FROM members WHERE memberId ='" . $id . "'"; 
$q = mysql_query($query); 
if (mysql_num_rows($q) == 0) 
{ 
     printf("<h4>Wrong user ID!</h4>"); 
} 
else 
{ 
    while ($row = mysql_fetch_array($q)) 
    { 
    printf("<h4>Your ID is %s</h4>", $row["memberId"]); 
    } 
} 
?> 

当变量$id1' OR '1'='1,我可以看到表中的成员的所有标识。 我也想实现DROP TABLE,但我不知道要插入什么变量ID $id。我试图在$id中插入123'; DROP TABLE sql injection--

你有什么想法在$id中插入什么或如何修改此代码?

回答

0

在控制台那就是:'; drop table members; select '

然而,你正在使用mysql_query,它仅支持单个语句。

这里是manual这样说:

的mysql_query()发送一个唯一的查询(多个查询不支持),以当前活动的数据库与指定link_identifier关联的服务器上。

另请检查此question。 正如你所建议的那样,你可以尝试在你的例子中使用multi_query

+0

当我在$ id中插入此值时,drop table不起作用。这只是为了在localhost上演示(我使用WAMP服务器,MySQL 5.6.17)。 – metjuf

+0

humm ...让我试试别的。 –

+0

'mysql_query'必须筛选出多个语句,这是一件好事:) –