登陆框:用户名,密码
登陆判断程序如下: $nickname=$_POST['username'];
$password=$_POST['password'];
$password=sha1($password);
$sql="select * from regist where name='$nickname' and password1='$password'";
echo $sql;
$re=mysql_query($sql,$conn); $result=mysql_fetch_array($re);当我输入
用户名:1' or '1'='1' or '1'='1
密码:123echo $sql的结果为:
select * from regist where name='1\' or \'1\'=\'1\' or \'1\'=\'1' and password1='40bd001563085fc35165329ea1ff5c5ecbdbbeef'分号都被转义了,这是PHP默认字符串分号转义,如何在不修改PHP默认设置时,构建一个有效的注入式SQL呢?
登陆判断程序如下: $nickname=$_POST['username'];
$password=$_POST['password'];
$password=sha1($password);
$sql="select * from regist where name='$nickname' and password1='$password'";
echo $sql;
$re=mysql_query($sql,$conn); $result=mysql_fetch_array($re);当我输入
用户名:1' or '1'='1' or '1'='1
密码:123echo $sql的结果为:
select * from regist where name='1\' or \'1\'=\'1\' or \'1\'=\'1' and password1='40bd001563085fc35165329ea1ff5c5ecbdbbeef'分号都被转义了,这是PHP默认字符串分号转义,如何在不修改PHP默认设置时,构建一个有效的注入式SQL呢?
if (get_magic_quotes_gpc()) {
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map(’stripslashes_deep’, $value) :
stripslashes($value); return $value;
} $_POST = array_map(’stripslashes_deep’, $_POST);
$_GET = array_map(’stripslashes_deep’, $_GET);
$_COOKIE = array_map(’stripslashes_deep’, $_COOKIE);
}
<?php
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value); return $value;
}// Example
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar"));
$array = stripslashes_deep($array);// Output
print_r($array);
?> 上例将输出:Array
(
[0] => f'oo
[1] => b'ar
[2] => Array
(
[0] => fo'o
[1] => b'ar
))
我是指在不修改PHP页面的情况下,构建有效的SQL注入语句
这样:
一。保证了正确的执行SQL语句,
二。当再次调用数据的时候。那些HTML tag又能自动转换成相应的字符。希望下面的代码能帮到你: $pattern = array("\"", "“", "”", "'", "‘", "’");
$replace = array(""", "&ldquo", "&rdquo", "&apos", "&lsquo", "&rsquo");
$nickname = str_replace ($pattern, $replace, $_POST['username']); 双引号 " 对应 "
左双引号 “ 对应 &ldquo
右双引号 ”对应 &rdquo
单引号 ' 对应 &apos
左单引号 ‘ 对应 &lsquo
右单引号 ’对应 &rsquo
还有其他的一些特殊的HTML转义字符。你可以查看下面的链接:
http://liudaoru.javaeye.com/blog/160679
或者自己搜索一下。 希望我对你的问题没有理解错误。