我需要帮助查询Sql Injection测试(请):
我的代码:
<?php
$conexion = @mysql_connect("localhost", "root","");
mysql_select_db("sqli");
if ( isset($_GET['id']) ) {
$user_id = $_GET['id'];
$query = "SELECT * FROM users WHERE id = $user_id LIMIT 1";
$result = mysql_query($query) or die('No!');
//$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);
if ( $row['rol'] == 'admininstrator' ) {
next_lvl();
}
}
if ( isset($_GET['name']) ) {
$name= strip_tags($_GET['name']);
echo "<h1>Hello $name</h1>";
}
?>
<body>
</body>
</html>
这是我的sql注入代码,但是,我需要访问函数&#34; next_lvl()&#34;。
我试试这个:http://localhost/sqli/sql.php?uid=4+or+1=1并打印下一个错误: 注意:未定义的索引:第24行的E:\ Programs \ wamp \ www \ Sqli \ sql.php中的rol
感谢。
答案 0 :(得分:1)
您的4 or 1 = 1
是有效查询,但它并不确保rol
是admininstrator
。你需要PHP来执行你想要的功能。如果您使用:
id && rol = 'admininstrator'
(但网址已编码)您可以确定rol
是admininstrator
。
要阻止此操作,您应升级到mysqli
或pdo
并使用参数化查询。如果您必须维护mysql_
驱动程序,则可以将ID转换为int
。
$user_id = (int)$_GET['id'];