我一直在评论关于PHP的addslashes函数如何/为什么容易受到sql注入攻击的文章.我读过的所有内容都说特定的mysql编码类型存在问题(default-character-set = GBK),或者如果启用magic_quotes则存在问题.但是,在这种情况下,我无法摆脱addslashes()函数并执行恶意操作 - 例如以管理员身份登录.
$user = addslashes($_POST['user']);
$pass = sha1($_POST['pass']);
$sql = "SELECT * FROM admins WHERE user = '".$user."' AND `pass` = '".$pass."'";
$nums = mysql_num_rows(mysql_query($sql));
if($nums==1){
$_SESSION['admin_user'] = $user;
$_SESSION['admin_pass'] = $pass;
Run Code Online (Sandbox Code Playgroud)
这是对客户的(次要)安全审核,我会建议他们使用PDO,但我需要显示他们当前的漏洞.
参考文献:
这是这个问题的后续问题:PHP的addslashes是否容易受到sql注入攻击?(感谢在那里回复的每个人).
相同的场景,但我有这个代码(在另一页):
$ID = $_GET['id'];
$sql = "SELECT * FROM blog WHERE id='$ID'";
$result = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
这应该很容易被利用,对吧?
如果我没记错的话,我不能在mysql_query()中运行第二个查询,但我应该能够做一些其他恶意的事情,对吧?希望能够将用户插入管理表或更改密码或其他内容,但我认为除了触摸博客表之外我无法做任何其他事情.那是对的吗?关于我如何玩耍和调整某些东西以证明有顾虑的任何建议?