Jas*_*son 7 php sql sql-injection
假设Web服务器使用以下PHP代码来处理登录请求:
$username = $_POST[user];
$password = $_POST[pass];
$sql = "SELECT * FROM users WHERE name = '$username' AND password = '$password'";
if(mysql_num_rows($rs) > 0){ //do something
}
Run Code Online (Sandbox Code Playgroud)
我认为该值' OR 1=1
将始终导致成功登录,因为查询将是:
"SELECT * FROM users WHERE name = '' OR 1=1 AND password = '$password'"
Run Code Online (Sandbox Code Playgroud)
它是否正确?
0x5c
编码\
和0x27
编码'
.字节0xbf27
表示两个字符¿'
,字节0xbf5c
是单个中文字符.如果用户名和密码字段添加斜线'
,"
,\
,和null
,什么用户名总是会导致一个成功登录,假设数据库解释字符串作为GBK但添加斜线处理字符串作为ASCII?我不确定句子的最后部分是什么意思(通过解释为GBK但处理为ASCII).有人能说清楚如何解决这个问题吗?