zoukankan      html  css  js  c++  java
  • SQL注入常用函数(注入小白的学习笔记)

    在盲注的情况下,往往需要一个一个字符的去猜解,即过程中需要截取字符串

    在这里整理了一下一些常用函数

    由于现阶段学习不够深入,整理分类不清楚具体,不过博主会慢慢进行完善

    user() 查询当前数据库用户

    version() 查询当前数据库版本

    database() 查询当前页面所连接的数据库名称

    @@Version_compile_os 查询服务器的系统版本

    mid()函数

    此函数为截取字符串一部分。mid(column_name,start,[length])

    参数

    描述

    column_name

    必需。要提取字符的字段。

    start

    必需。规定开始位置(起始值是 1)。

    length

    可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

    例如:str="123456"   使用 mid(str,2,1) 语句 意为 从str 的第二个字符开始,截取长度为1 ,所以结果为2

    mid(database(),1,1)>’a’,查看数据库名第一位是否比a大(这里依次替换a 直至查出最终字符是哪一个)

    mid(database(),2,1),查看数据库名第二位

    substr()函数

        Substr()和substring()函数实现的功能是一样的,均为截取字符串。

        string substring(column_name, start, length)

        string substr(column_name, start, length)

        参数描述同mid()函数,第一个参数为要处理的字符串,start为开始位置,length为截取的长度。

     意与mid函数大相径庭

    substr(database(),1,1)>’a’,查看数据库名第一位是否比a大(这里依次替换a 直至查出最终字符是哪一个)

    substr(database(),2,1),查看数据库名第二位

    left()函数

     left()得到字符串左部指定个数的字符

     left ( string, n )    

    参数

    描述

    string

    必需。要提取字符的字段。

    n

    必需。提取长度

    例:

    (1) left(database(),1)>’a’,查看数据库名第一位,left(database(),2)>’ab’,查看数据库名前二位。

    (2) string部分可以为自行构造的sql语句。

    (3)正确则返回1,错误则返回0。

    like()函数

     like后面能进行模糊匹配,关键字内容为

     %    => 匹配任意个字符串

     _     => 匹配一个字符

    但是存在前提,被匹配的字符可以是select查询语句,可以是该表内的字段,可以是返回为字符串的函数比如database()

    regexp()函数

     在这里转载一个文章,让自己对于regxp函数理解了很多,也比较详细,大家也可以去看看https://www.cnblogs.com/lcamry/articles/5717442.html

     其实在某种程度上regexp和like的效果差不多,但是由于它支持正则表达式,所以有一些比较难搞懂。

    例如:

     select user() regexp ‘r’ user()的结果是root,regexp为匹配root的正则表达式

       上例中就是把查询到的user用户也就是root和r从左至右进行比较,相同是1,不同是0.

    ascii()函数/ord()函数

     将某个字符串转化为ascii值

    sleep()函数

     网页延迟n秒后,输出结果;

    if()函数

     条件判断函数

     if(a,b,c):if判断句,a为条件,b、c为执行语句;如果a为真就执行b,a为假就执行c;

    length()函数

     length(column_name)

     常用length(database()),即返回当前数据库名长度;

    concat()函数

     将多个字符串连接成一个字符串,返回结果为连接参数产生的字符串

     concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。 

    rand()函数
     随机函数,返回0~1之间的某个值
    floor(a)
     取整函数,返回小于等于a,且值最接近a的一个整数
    count()函数
     聚合函数也称作计数函数,返回查询对象的总数
    group by cluase
     分组语句,按照cluase对查询结果分组
    floor()函数

     floor()函数原本为向下取整,其中rand()函数为随机数生成,不能于order by共用,数据记录必须有两条以上。

     mysql在遇到 select count(*) from ... group by x这语句的时候会先建立一个虚表,然后开始查询数据,取数据库数据,然后查看虚拟表存在不存在,不存在则插入新记录,存在则count(*)字段直接加1,x是sql中暂时成为查询语句的虚拟表的字段名。

     and的后面加了跨度很大的括号:优先后面的注入语句执行,后面的注入语句被优先执行,本身就计算出错然后就会直接报错,那么就没有前面的select语句的什么事儿了。我们可以简单的理解为语句短路。

     如果还有看不明白的献上一份大神讲解floor函数解析的博客:https://blog.csdn.net/cried_cat/article/details/80022378
     
    (ps:小白博主是学习资源的搬运工[滑稽],侵删)
    注入小白博主学习备注:
    有些大神的语句里面出现一些自己看不懂的东西...
    空格是%20,单引号是%27, 井号是%23,双引号是%22
     

    有问题的话欢迎大家指出~ 

  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/Ghost-m/p/12272576.html
Copyright © 2011-2022 走看看