sql注入之堆叠注入及waf绕过注入

#堆叠查询注入

1.堆叠查询概念

stacked injections(堆叠查询注入)从名词的含义就可以看出一应该是一堆(多条)sql语句一起执行。而在真实运用中也是如此,我们知道在mysql中,主要是命令行中,每一条语句后面加“;”表示为语句的结束。这样我们就能想到是不是可以多句一起执行。而在不同额数据库中,堆叠的知识体系不同。堆叠注入只产生在一小部分数据库中。

在遇到我们知道管理员的账号和密码,密码是加密的,且无法解密;此时我们就可以使用堆叠注入进行插入数据,用户密码自定义的,可以插入一个用户,再用插入的用户进行登录操作。

2.堆叠注入靶场演示

sqlilabs第38关

查看源码:

sql注入之堆叠注入及waf绕过注入

发现有函数:mysqli_multi_query()

此函数的作用是:执行一个或多个针对数据库的查询,查询语句使用分号隔开。

由此我们可以考虑使用堆叠注入。

构造payload:

http://xx.xx.xx.xx/sql-labs/Less-38/?id=1';insert into users(id,username,password)values(21,'Bob','2021')--+

再查询id=21,发现已经注入成功

sql注入之堆叠注入及waf绕过注入

#sql注入之waf绕过

1.基本方法

基本方法如下思维导图

sql注入之堆叠注入及waf绕过注入

sql注入之堆叠注入及waf绕过注入

2.靶机演示

服务器上开启安全狗,sqlilabs第2关进行演示

and 1=1 ,被拦截

sql注入之堆叠注入及waf绕过注入

以post形式进行提交,不被拦截,但接收不到值。

sql注入之堆叠注入及waf绕过注入

查看源码,是GET请,使用post传入数据无法执行。

sql注入之堆叠注入及waf绕过注入

将其修改为REQUEST方式

构造payload:

http://xx.xx.xx.xx/sqli-labs/Less-2/?id=-1 union select 1,2,database() --+

被拦截:

原因是安全狗有拦截sql的union注入,或查询数据库相关信息等。

我们进行参数污染:

payload:

http://xx.xx.xx.xx/sqli-labs/Less-2/?id=1 /**&id=-1%20union%20select%201,2,3%23*/
?id=1 /**&id=-1%20union%20select%201,2,3%23*/等价于id=-1 union select 1,2,3#
成功绕过:

sql注入之堆叠注入及waf绕过注入

 
上一篇:jquer基础篇二


下一篇:openstack常规操作命令梳理