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. 如何制作C语言基本数据类型的思维导图

    在使用C语言编写程序时,数据类型是一个非常重要的内容,任何一个不被重视的数据错误都会使编译器无法翻译,导致程序报错. 使用思维导图来梳理各个数据类型是一个很有效的记忆方法,接下来就为大家展示一下我用i ...

  2. 在FL Studio中如何制作和优化你的人声和弦(Vocal Chords)

    人声和弦在Future Bass.Melodic Dubstep等类型的电子音乐中被常用.与一般的和弦相同,其主要起到为主旋律做铺垫的效果,但是人声和弦加入了人声的因素,可以使得和弦更有趣,更有电子音 ...

  3. 如何在Mac上安全彻底的卸载软件?

    Mac如何卸载软件呢?通常我们的做法都是将应用程序图标移动到废纸篓中,这样就算是将mac软件卸载了,但是这样真的将软件卸载干净了吗?当然没有,一个软件并不是只有应用程序包,他还会包含很多的偏好文件等等 ...

  4. 追踪聚光特效怎么实现,有Vegas就够了

    舞台聚光灯大家一定都不陌生,在电视上某些颁奖活动里,主持人的进场一定伴随着舞台灯光的聚光效果.随着主持人的移动,灯光也随之移动.这里的舞台灯光就起到了一个追踪聚光的效果. Vegas Pro 16 增 ...

  5. 安装curl,composer

    wget https://curl.haxx.se/download/curl-7.54.1.tar.gz tar -zvxf curl-7.54.1.tar.gz cd curl-7.54.1 ./ ...

  6. 337. 打家劫舍 III(树上dp)

    在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根". 除了"根"之外,每栋房子有且只有一个" ...

  7. jquery删除文件

    1 <div class="panel panel-default"> 2 <div class="panel-body"> 3 < ...

  8. Spring MVC系列-(5) AOP

    5 AOP 5.1 什么是AOP AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的 ...

  9. mysql-查询不同列的数量合计

    车辆违规信息表testmodel_test 表结构: 表字段:cra_id(车牌号),if_weigui(该次行驶是否违规,0是正常,1是违规) 目的: 查询表中共有几辆车,违规的有几辆车: 方法1 ...

  10. Jinja2语法自动补全配置

    Jinja2语法自动补全配置 说明 在使用Pycharm社区版进行Web开发时,Jiaja2的语法是不会自动提示补全的,为了提高开发效率,需要根据个人习惯进行一些常用语法的自动补全配置,具体如下. 配 ...