目录
1、魔术引号
PHP有攻击就会有防御,我们做SQL注入的时候会遇到下面这样的情况:
select*from news where id='1'
正常情况下,像这样的SQL语句我们的注入点都是在id传参,就是在语句中1这个地方,如果说我们要在这个地方做SQL注入,我们需要怎么做?
我们需要闭合单引号然后注释掉后面单引号,还有一个方法就是添加一个单引号和后面这个单引号凑成一对;
目的是让我们的输入跳出单双引号,因为在单引号和双引号里我们所写的一切都是字符串。
什么是魔术引号?
PHP有个函数叫做魔术引号,魔术引号就是对用户的传参进行处理的,它会对POST、GET、COOKIE传递过来的参数加一个转义符号"\",加了这个符号就可以防止注入;
单引号(')、双引号(")、反斜线(\)等字符都会被加上反斜线,那这个时候就无法闭合了;
select*from news where id='1'
遇到像上面这样的语句,你写单引号闭合它会给你转义掉,你写转义符号它会把你的转义符号转义掉,但魔术引号就可以避免这样的情况;
如何开启魔术引号?
phpstudy有自带的开启方式,我们先将phpstudy开启;
找到magic_quotes_gpc(魔术引号开关);
点击magic_quotes_gpc,然后再点击启动之后就会出现这样的页面;
这时候出现一个弹框,会发现我们没有开启成功;
这是因为版本限制,PHP的高版本是不存在这个东西的,在PHP5.4这个版本已经把魔术引号取消了,取消掉不代表不能用,只不过是把它转化为一种函数了,就不在配置文件里面打开,如图:
在点击切换版本,选中5.3.29版本;
然后点击启动,就会出现这样的界面;
之后选中magic_quotes_gpc;
打开网站根目录;
在www目录下新建一个php文件,自定义命名;
会出现一个弹框,点击是即可,是不影响的;
然后双击打开a.php,输入代码;
<?php
echo $_REQUEST[8];
?>
输入好代码之后,Ctrl+S保存,然后打开My HomePage;
会出现这样的页面;将index.php改为a.php;
回车之后会出现这样的界面,出现了报错,它不知道8是什么;
我们来查一下,比如说8=123;
它就会输出123;
如果我们输8=123',会是什么样?
会发现当你多输一个'(单引号)的时候,就会多一个反斜杠(\);
当你多输一个"(双引号)的时候,也会多一个反斜杠(\);
当你输一个\(反斜杠)的时候,还是会多一个反斜杠(\);
我们修改一下语句,看看能否写SQL注入;
<?php
$a = "select*from news where id='$_REQUEST[8]'";
echo $a;
?>
如下图,这样子的话做SQL注入就比较难了;
注入点在123这里,我们要去写单引号闭合,但是单引号无法闭合了,那么这里就不存在SQL注入,所以说加了魔术引号之后,这会是一种死局。
这是低版本做法:magic_quotes_gpc
方法一:直接修改配置文件,可以通过其他选项菜单——Php扩展及设置——参数开关设置——magic_quotes_gpc;
方法二:通过其他选项菜单——打开配置文件——php_ini去搜索关键词,这样也能找到它,相当于它是修改了配置文件;