1·sql的注入原理:
用户输入的东西,可以是数字,字符,或者其他的什么语言会被整合到后台的服务器上进行执行,而SQL注入就是通过构造合法的语句,让这语句整合到后台服务器上执行一些违法的操作。
2.sql注入具体的案例:
数字型注入(post)
$ id=$_POST['id'];
$ query="select username,email from member where id= $id";
$ result=execute($ link, $query);
这里我们可以看到, $id这里没有做任何的处理,如果我输入:
1 or 1( $ query="select username,email from member where id= 1 or 1")那么该出语句就恒为真了,就可以遍历出来其他的信息了。
搜索型注入
$ query="select username,id,email from member where username like '% $ name % ' ";
$result=execute($link, $query);
这里我们可以看到它做了处理,就是(‘% %’),不过按照sql注入原理,我们也可以让它恒为真,比如输入:1 %' or 1 # 整合到后台:
( $ query="select username,id,email from member where username like '% 1 %' or 1 # % ' ")
就可以恒为真了。思路是先闭合掉它的语句,然后再加上 or 1 #(#这里是注释掉的意思,就是后面都不要了。)
字符型注入
$ query=" select id,email from member where username='$name' ";
$ result=execute($link, $query);
和搜索型一样的思路:先闭合掉,然后再加上 or 1#。例如输入:
1’or 1# 整合到后台就变成了
$ query=" select id,email from member where username='1’or 1#' ";
这里要注意一下,闭合的方法有很多比如这里也可以用双引号,都可以试试,不行就换换。
3.总结:
sql注入绝对不止这么一点点,这里的只是冰山一角,甚至sql有专门的一本书,这里就举几个例子。
关于是否存在sql注入问题,可以先输入一些语句,看看后台的反映,如果它反映说语句错误,那么这里就存在sql注入漏洞。
新手上路,这是作业,不对的地方请指正。