SQL注入基本知识


information_schema   

MySQL 中存储所有数据库名、所有表名、所有字段名的系统数据库叫 information_schema ,这是在 MySQL 数据库初始化就存在的系统库。库里存储数据库名、表名、字段名的表分别为 schemata 、tables、columns(原始表名为大写,但小写也能取到数据)。

SELECT  *  FROM  information_schema.TABLES  WHERE  TABLE_SCHEMA='数据库名';               解释:从总表中将所需的数据库名查出来

SELECT  *  FROM   information_schema.xxxxx     WHERE     TABLE_NAME = 'sss' ;                     解释:从xxxx数据库中把表名为sss里面的数据查出来

表名 关键字段
schemata schema_name [数据库名]
tables table_schema [数据库名],table_name [表名]
columns table_schema [数据库名],table_name [表名],column_name [列名]
select  schema_name   from    information_schema.schemata      查询所有的数据库名称

select  table_name    from   information_schema.tables   where   table_schema  = 'mysql '     查询名为 mysql 数据库中的表名

select  column_name   from   information_schema.columns  where table_name = 'user'  and table_schema = 'mysql'      查询名为mysql数据库下user表中的字段名称

select (user,password)  from mysql.user       查询数据库为mysql下user表中user和password字段下的内容

concat()函数

功能:将多个字符串连接成一个字符串。

语法:concat(str1, str2,...)

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

1:select concat (id, name, score) as info from student;

返回的结果就是   1小明79

若是嫌格式数据显示不够清楚,可以加 ‘-’

select concat (id, '-',name, '-', score) as info from student;

返回的结果就是   1-小明-79

group_coucat函数()

group_concat (  [DISTINCT] 要连接的字段      [Order BY ASC/DESC 排序字段]      [Separator '分隔符']  )

将group by产生的同一个分组中的值连接起来,返回一个字符串结果

例:select name, group_concat (id) from student  group by name;

小明 | 1,5,6

小丽 | 2,4

小伟 | 3

小红 | 7

这样就使用group_concat()和group by显示相同名字的人的id号

order by

语句判断,判断该表中一共有几列数据

order by 3页面回显正常,order by 4页面回显不正常,说明此表一个有3列。

union 联合查询

根据SQL语言的特性,使用联合查询联合的结果集之间必须具有相同数量的列名(也就是列数)(也就是说,必须在已知列数的情况下才能使用联合查询,所以联合查询的使用必须在  order by 之后)

查询数据库信息    @@version    @@datadir

查询用户名,数据库名     user()   database()

文件读取  union select 1,load_file('C:\\wondows\\win.ini')#

写入 webshell       select..into  outfile...

回显点

联合注入是需要显示结果的,这里就会用到一个叫做回显点的东西。

回显点就是 SQL 查询结果显示在页面上位置,有回显点的 SQL 注入叫做回显点注入。

比如一篇文章的标题、作者、时间、内容等等,这些都可能成为回显点。

继续上面的,查询字段数可以通过 order by x 实现。这边我学到一个知识点,order by 不仅可以按照表中的某个字段名排序,还可以用数字代表查询结果的列(col­umn)进行排序。

比如查询结果有两列,id、name,order by 1 就等于 order by id

limit 不同,order by 从 1 开始计数,0 列不存在,大于查询结果列数会报错。

所以可以通过 order by x 测算出查询结果列数。

select id,name from user where id=1 order by 3 报错,则说明运行的 SQL 语句查询字段数为 2。

知道了查询结果列数,就可以通过联合查询返回需要回显的信息了。

想要显示我们需要的信息,可以将当前的查询结果置空,即判断条件改成 false。

就比如说一共有三列      ?id=1    返回正常  我们需要构造  ?id= -1 union select 1,2,3  from  xxx   where   xxx

目的就是,数据库查询不到 id=-1 的数据,就不会有结果返回,也就没有显示,但是后面的语句会查询出来,会出现在原先的显示位置,这样就把我们想要的数据查询出来 了

sql注释符

#     单行注释   注意与url中的#区分,常编码为%23

--空格      单行注释  注意为短线短线空格

/*()*/      多行注释  至少存在俩处的注入   /**/常用来作为空格

注入流程

是否存在注入并且判断注入类型

判断字段数   order by

确定回显点      union select 1,2

查询数据库信息    @@version    @@datadir

查询用户名,数据库名     user()   database()

文件读取  union select 1,load_file('C:\\wondows\\win.ini')#

写入 webshell       select..into  outfile...

补充一点,使用sql注入遇到转义字符串的单引号或者双引号,可使用HEX编码绕过

SQL注入----盲注

基于布尔 SQL 盲注

基于时间的 SQL 盲注

基于报错的 SQL 盲注

SQL注入基本知识点总结的更多相关文章

  1. sql注入知识点整理(基础版)

    sql注入知识点整理(基础版) 基本步骤 判断是否报错 判断闭合符号 判断注入类型 构建payload 手工注入或者编写脚本 基本注入类型 报错型注入 floor公式(结果多出一个1):and (se ...

  2. sql注入原理+mysql相关知识点

    什么是SQL注入 sql就是经常说的数据库,而sql注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.SQL注入是比较常见的网络攻击 ...

  3. 关于防止sql注入的几个知识点

    1.PDO预处理是首选. 你可以把他看成是要运行的sql的已经编译过的模板,它可以用变量参数进行定制 它有两个显著优点: 1.1:查询仅需解析一次,但可以用相同或者不同参数执行多次.换句话说如果要以不 ...

  4. sql注入知识点

    需找sql注入点1\无特定目标inurl:.php?id= 2\有特定目标:inurl:.php?id= site:target.com 3\工具爬取spider,对搜索引擎和目标网站的链接进行爬取 ...

  5. 有关SQL注入的一些小知识点

    1.判断注入点: 本质原理是找一个需要后台处理后,提交给数据库的点,我理解为用户可以控制并输入后台数据库的变量,比如我们DVWA SQL injection 的ID  ,我们可以通过闭合单引号,#注释 ...

  6. C# sql语句拼接时 like情况的防sql注入的用法

    今天下午同事问我一个比较基础的问题,在拼接sql语句的时候,如果遇到Like的情况该怎么办. 我原来的写法就是简单的拼接字符串,后来同事问我如果遇到sql注入怎么办.我想了下,这确实是个问题. 刚在网 ...

  7. SQL注入原理及绕过安全狗

    1.什么是SQL注入攻击 SQL注入攻击指的是通过构造特殊的输入作为参数插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令 http://www.xxx.com/list. ...

  8. SQL注入关联分析

    在Web攻防中,SQL注入绝对是一个技能的频繁项,为了技术的成熟化.自动化.智能化,我们有必要建立SQL注入与之相关典型技术之间的关联规则.在分析过程中,整个规则均围绕核心词进行直线展开,我们简单称之 ...

  9. Sql注入测试--Sqlmap

    慕课网sqlmap学习笔记: 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 例如 (1)在url上 ...

随机推荐

  1. 给git日志添加好看的样式

    windows添加如下命令,让入了全局环境里 git config --global alias.lg "log --color --graph --pretty=format:'%Cred ...

  2. zabbix agent 编译安装

    zabbix 安装包下载地址 https://www.zabbix.com/download 解压好之后进入zabbix目录 执行编译安装 ./configure --prefix=/usr/loca ...

  3. LIKE 运算符

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+".在vb2005中运算符大致可以分为5种类型:算术运算符.连接运算 ...

  4. CSS3 学习笔记(上)

    一.CSS简介 CSS(Cascading Style Sheets)层叠样式表.其中,样式定义为如何显示HTML元素,它通常储存在样式表,将样式添加到HTML中,能够解决内容与表现分离的问题.由于网 ...

  5. 记一次腾讯TBS浏览服务集成实践

    这次的分享源于最近的实际开发工作. 项目需求是 在原生Android应用中嵌入WebView,放置用于支撑音视频直播业务的Web页: 另外还需提供Word.Excel.PowerPoint.PDF等常 ...

  6. Ajax Status(状态码) & readyState()

    Ajax Status & readyState readyState(状态值) 是指运行AJAX所经历过的几种状态,论访问是否成功都将响应的步骤,可以理解成为AJAX运行步骤,使用" ...

  7. Java 关于策略模式+简单工厂模式下的思考

    导读 最近在做公司一个消息网关的服务,包括:短信.微信.邮件等,所有请求通过一个入口,方便接口的管理(记录日志.接口限流白名单啥的).如何写这个接口呢,还有为了以后扩展,对接过短信.微信.公众号的童鞋 ...

  8. Oracle11gR2 RAC voting disk error

    故障现象:2+3节点配置,alert日志中提示vote盘错误,集群无法拉起来. 分析过程:Oracle 11g RAC依据OLR,OCR,VOTE磁盘进行节点信息注册,维护集群状态以及完成选举投票.其 ...

  9. 自动化运维工具之Puppet常用资源(一)

    前文我们聊到了puppet的架构,单机模型和master/agent模型的工作流程以及puppet的基础使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14 ...

  10. 03Python网络编程系列之服务端

    # 这里边是一个定义了服务端的一系列函数,是Python网络编程这本书第七章的第一个例子.# 这是供后边函数进行调用了,然后我们来进行研究网络的单线程编程,多线程编程.异步网络编程等.# 导入网络编程 ...