SQL注入----二次注入、堆叠注入

二次注入

最近在看到《Web安全攻防 渗透测试实战指南》说了关于二次注入的问题,以前就听过二次注入,但是没有深入了解过。

栗子:有两个界面,1.php是用户注册的页面(不一定是注册,主要是一个可以插入sql语句的页面),另外一个2.php通过某些参数(比如ID)去读取用户信息(比如用户名)的页面。在注册用户名的页面,我们注册一个 test' 的用户,这个单引号被成功插入到了数据库(先不管用户名不给单引号的事实,可以是插入其他的信息,比如个签等)。

昨天看到这里卡壳了,首先为什么经过addslashes函数过滤之后,单引号还是被带入到了数据库。经过查询才知道:

addslashes函数虽然在过滤之后会添加 “\” 进行转义,但是 “\” 并不会被带到数据库中

因此这里我们就可以成功将单引号插入到数据库中,在2.php我们去查询这个用户名的时候,如果在取出用户名的时候没有进行addslashes过滤,那我们的单引号就可以成功被带出来供我们下一步的使用了。

堆叠注入

原理:堆叠注入就是利用了堆叠查询可以执行多条语句,多语句之间以分号隔开的特点,在第二个sql语句中构造自己想要执行的语句。

由于现在很多都会采用PDO预编译来预防sql注入问题,虽然PDO可以执行多语句,但是PDO只会返回第一条sql语句执行的结果,所以在第二条语句可以用update更新数据或者使用时间盲注获取数据

你可能感兴趣的:(SQL注入----二次注入、堆叠注入)