美文网首页测试汇总
表单的SQL注入

表单的SQL注入

作者: 静雨无痕 | 来源:发表于2017-08-18 15:34 被阅读0次

    所谓SQL注入:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。也就是说用sql代码登入你想进的网站,但是你没有账号或密码或是你有一个账号,你就可以用sql注入进入相关的网站,提前你想要的信息。

    密码SQL注入:

    比如:我的用户名是:foo  密码是:‘or‘1'=’1

    sql语句在查询时就变成了下面一句话:

    $sql = “select count(*) as ctr from users where username=’foo’ and password=” or ‘1′=’1′ limit 1″;

    很明显,现在变成又多了一个条件1=1?只要两个条件有一条符合,就可以返回1,所以foo可以在密码为空的情况可以登录网站。

    用户名SQL注入:

    比如:填好正确的用户名(marcofly)和密码(test)后,点击提交,将会返回给我们“欢迎管理员”的界面。

    sql如下:

    $sql=“select * from users where username='marcofly' and password=md5('test')”;

    很明显,如果给出正确的用户名和密码就能成功登录网站;但是,如果我们输入一个错误的用户名或密码呢?很明显,登入不了吧。恩,正常情况下是如此,但是对于有sql注入漏洞的网站来说,只要构造特殊的“字符串”,照样能够登入成功。

    比如:在用户名输入框中输入:’ or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:

    $sql="select * from users where username='' or 1=1#' and password=md5('')";

    语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,换句话说,以下的两句sql语句等价:

    $sql="select * from users where username='' or 1=1#' and password=md5('test')";

    等价于

    $sql="select * from users where username='' or 1=1";

    因为1=1永远是都是成立的,即where子句总是为真,将该sql进一步简化之后,等价于如下select语句:

    select * from users 没错,该sql语句的作用是检索users表中的所有字段。

    有漏洞的脚本才有机会给你攻击,比如一个带参数的删除脚本a.asp?action=del&id=2你可以改为a.asp?action=del&id=2 or 1这样就有可能删除全部数据------sql注入就是通过类似的手段来破坏数据。

    说了以上这么多,总结下来,在测试登录时,只需记住在用户名或密码文本框中输入:'or' 1 '=' 1就可以了。

    相关文章

      网友评论

        本文标题:表单的SQL注入

        本文链接:https://www.haomeiwen.com/subject/atfnrxtx.html