教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 利用SQL注入漏洞登录后台的实现方法

利用SQL注入漏洞登录后台的实现方法

发布时间:2023-05-04   编辑:jiaochengji.com
教程集为您提供利用SQL注入漏洞登录后台的实现方法 等资源,欢迎您收藏本站,我们将为您提供最新的利用SQL注入漏洞登录后台的实现方法 资源
早在02年,国外关于SQL注入漏洞的技术文章已经很多,而国内在05年左右才开始的。   如今,谈SQL注入漏洞是否已是明日黄花,国内大大小小的网站都已经补上漏洞。但,百密必有一疏,入侵是偶然的,但安全绝对不是必然的。   前些天,网上传得沸沸扬扬的“拖库”事件给我们敲响了安全警钟。   在开发网站的时候,出于安全考虑,需要过滤从页面传递过来的字符。通常,用户可以通过以下接口调用select_db("injection",$conn) or die("您要选择的数据库不存在"); $name=$_POST['username']; $pwd=$_POST['password']; $sql="select * from users where username='$name' and password='$pwd'"; $query=mysql_query($sql); $arr=mysql_fetch_array($query); if(is_array($arr)){ header("Location:manager.php"); }else{ echo "您的用户名或密码输入有误,请重新登录!"; } ?> 注意到了没有,我们直接将用户提交过来的数据(用户名和密码)直接拿去执行,并没有实现进行特殊字符过滤,待会你们将明白,这是致命的。 代码分析:如果,用户名和密码都匹配成功的话,将跳转到管理员操作界面(manager.php),不成功,则给出友好提示信息。 登录成功的界面: 登录失败的提示: 到这里,前期工作已经做好了,接下来将展开我们的重头戏:SQL注入 2) 构造SQL语句 填好正确的用户名(marcofly)和密码(test)后,点击提交,将会返回给我们“欢迎管理员”的界面。 因为根据我们提交的用户名和密码被合成到SQL查询语句当中之后是这样的: select * from users where username='marcofly' and password=md5('test') 很明显,用户名和密码都和我们之前给出的一样,肯定能够成功登陆。但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。 比如:在用户名输入框中输入:' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为: select * from users where username='' or 1=1#' and password=md5('') 语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,换句话说,以下的两句sql语句等价: 复制代码 代码如下: select * from users where username='' or 1=1#' and password=md5('') 等价于 复制代码 代码如下: select * from users where username='' or 1=1 因为1=1永远是都是成立的,即where子句总是为真,将该sql进一步简化之后,等价于如下select语句: select * from users 没错,该sql语句的作用是检索users表中的所有字段 小技巧:如果不知道' or 1=1#中的单引号的作用,可以自己echo 下sql语句,就一目了然了。 看到了吧,一个经构造后的sql语句竟有如此可怕的破坏力,相信你看到这后,开始对sql注入有了一个理性的认识了吧~ 没错,SQL注入就是这么容易。但是,要根据实际情况构造灵活的sql语句却不是那么容易的。有了基础之后,自己再去慢慢摸索吧。

您可能感兴趣的文章:
利用SQL注入漏洞登录后台的实现方法
web安全之文件上传漏洞攻击与防范方法
PHP漏洞中的战争
电脑一上网就自动重起怎么办
php is_numberic函数产生sql注入漏洞怎么解决
Dolby Audio X2(DAX2)越权漏洞
如何修补php漏洞
PHP函数addslashes与mysql_real_escape_string区别分析
php代码审计需要会php吗
php如何防sql注入?

[关闭]
~ ~