二次注入
续sql注入从入门到入门
因为这个二次注入,听说过,也见师傅注过
但还是不太知道这个二次是个什么意思
二次
以前听到的都是关于引号的转义
大意是注册的时候,由于GPC或者其他,我们输入的payload里的单引号被转义了
?username=akak'
mysql> insert into user(uname) vaules ('akak\'');
mysql> select * from user;
+----+-----------+
| id | uname |
+----+-----------+
| 1|akak' |
+----+-----------+
这个单引号就进去了,再取出来的时候,就引入了单引号
是不是说这里如果开了magic_qutoes_runtime
就可以防止二次注入了???
所以这个二次指的就是第一次不会直接造成危害
再第二次用的时候实现了注入
正文
上面就是正文哈哈哈哈
这次某春秋全国大学生交换flag大赛
里有这样的一个题目叫 flag bending machine
是一道二次注入,不过和单引号bypass没有什么关系
刚刚
就在刚刚准备找更多的一些资料,发现了一个ppt叫做web代码安全边缘性问题
网名为5up3rh3i
的大佬,拼写了一下,发现好像其实是传说级大佬黑哥
这个ppt里详细的说了一下二次注入
感觉是一份神级资料
原来这个二次是Second attack
,ahhhhh~
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误
以下内容来自上面的ppt,我只是摘抄出来
二次攻击的特点
- 常常存在漏洞类型的转换
- 常常存在变量中转
类型1 文件系统函数漏洞转换
<?
// vul1.php
unlink($a);
?>
<?
//config.php
$include = '../';
?>
<?
//vul2.php
include '$include/common.php';
?>
我们用vul1.php
把config.php
删掉,这样子在register_globals=On
的情况下就能用vul2.php
包含任意文件了
类型2 SQL注入漏洞转换
SQL注入 => Update/Insert => 数据库
数据库 => Select => 其它函数
这个漏洞在第二阶段取出来丢到其他函数的时候触发
举的例子就是先update了一波,但经过escape,防了一波SQL注入
但没有过滤../
这些
后来又给select出来了丢到include里,这个时候利用了一波
类型3 preg_replace
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject)
$subject 是要替换的母串
$pattern 是模式
$replacement 是要替换成的
第一个参数加了修饰符号/e
的时候,第二个参数会被当做命令来执行
有些没看懂
另外preg_replace
里存在%00截断(是不是现在已经被修复了???)
类型4 编码/解码
就是讲了二次编码
造成的洞