差点忘了一点,在sql注入的时候,php与asp有所不同,mysql对sql语句的运用没有mssql灵活,因此,很多在mssql上可以用的查询语句在mysql数据库中都不能奏效了. 一般我们常见的注入语句像这样:aaa.php?id=a' into outfile 'pass.txt或是aaa.php?id=a' into outfile 'pass.txt' /*再进一步可以改成:aaa.php?id=a' or 1=1 union select id,name,password form users into outfile 'c:/a.txt 这样可以将数据库数据导出为文件,然后可以查看. 或是这样:mode=',user_level='4 这个语句一般用在修改资料时,假设页面存在漏洞的话,就可以达到提升权限的做用. 其它的如' or 1=1 -- 或者:1' or 1='1则跟asp差不多.这里不多讲了.在php里面,sql注入看来还是漏洞之首啊,有太多的页面存在这个问题了.
首先,我个人认为最重要的一点是将magic_quotes_gpc高为on,它的作用是将单引号,双引号,反斜线,和空字符转换为含有反斜线的字符,如select * from admin where username='$username' and password='$password'语句,攻击者想用1' or 1='1跳过验证,但是,那些字符串将被转换成这样:select * from admin where username='a' and password='1/' or 1=/'1'从而达到阻止注入的目的,事实也就是自动进行了addslashes()操作.再不行的话,自己定义函数处理吧.现在看来,那些搞php注入的人也比较郁闷,因为myslq4以下版本不支持子语句,而新版本的mysql又会将magic_quotes_gpc选项默认为开.