当前位置: 首页 > news >正文

sqli-labs-php7-master第5-10关

第五关:

根据提示输入ID,随便来个一

输入100,因为数据库没有,所以这里没输出内容

还是先找注入点:输入单引号试试

注入点找到了‘

查询数据库列数;?id=1' order by 4 --+

测试发现order by 3时页面正常,当对第4列字段进行排序时,页面报错。说明该表只有3列

页面有布尔状态,所以用布尔盲注。页面没有回显不能用联合查询注入,没有报错信息,不能用报错注入

在这里,我们猜测数据库长度大于10,这里没有结果输出,说明数据库长度小于10

在这里,我们猜测数据库长度为8,发现有结果显示。说明数据库长度为8

再来一个substr()的例子:

猜测数据库第一个字符为K

在猜测数据库第一个字符为s

其他的操作也可以通过这样猜的方式得出

例如表名,字段名等

第六关:

先介绍一下,updatexml报错注入

原理: 我们在使用该函数进行报错的时候一般会去修改其第二个参数,通过构造非法格式的查询语句,来使其返回错误的信息,并将其更新出来。如果路径中(第二个参数)存在特殊符号 比如'~',就会报错 , 同时显示路径参数的内容,如果路径参数中包含函数 , 那么函数将会被执行 , 并将执行结果展示在报错内容中。

首先熟悉的单引号字符注入

发现没反应,可能过滤了单引号

 

OK,来试试双引号

注入点就找到了

试一试:id=1" and updatexml(1,concat(0x7e,(select database())),3);

获取表名:

id=1" and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema = 'security' limit 0,1)),3)--+

web页面只能显示一行,所以用limit 限制

第七关:

首先寻找注入点

根据报错信息可以猜测'))或者"))

先来试试'))

可以发现注入点就是'))

使用select ...into outfile 语句的前提条件

1.mysql数据库中secure_file_priv参数设置允许对目录进行导入导出操作

2.mysql对路径有读取权限

3.在进行文件读取时要有权限。

secure_file_outfile参数

1.如果为空:不做任何限制,,任何目录都可以

2.如果指定了目录,就只能从这个目录导出

3.如果设置为NULL,则禁止导入导出功能。

使用导出语句进行数据爆破

?id=1')) union select 1,database(),version() into outfile '/root/text' --+

发现有问题

 show global variables like '%secure%';

在进行数据导出的时候出现–secure-file-priv option so it cannot execute this statement

问题时,修改/etc/mysql/mysql.conf.d/mysqld.cnf文件

在末尾添加一句secure_file_priv=”/”即可将数据导出到任意目录

又来了这个问题

算了算了。先跳过

第八关:

注入点为'

解释一下为什么不用报错注入:

当我们输入的语句正确,页面正常回显;当我们输入的语句错误,页面并不会给我们显示报错信息。显然我们不能使用报错注入了。

盲注:首先盲注是SQL注入的一种,盲注是在SQL注入的基础上,根据SQL注入的回显不同而定义的。也就是在服务器或者页面没有错误回显的时候完成的注入攻击。其实也就是猜解,输入语句猜解数据库名字、表名等等。

时间盲注:通过页面的响应时间来判断条件是否正确。

布尔盲注:布尔盲注一般适用于页面没有回显字段(不支持联合查询),且web页面返回True 或者 false。

举个栗子:

这是正确的输入

错误的输入

第九关:

可以看见一样没有内容信息显示

老方法:报错注入和盲注

先来报错注入:

id=1' irder by 4 --+

 经过判断该数据库的字段数为3,我这里根据第四列排序,肯定是错的。 

当然了:布尔盲注也用不了了

因为使用布尔盲注的前提是页面必须在面对不同的语句的时候有不同的回显。也就是语句正确回显正常,语句错误回显不正常。

这种时候适合采用时间盲注:

if(expr1,expr2,expr3)含义是如果expr1是True,则返回expr2,否则返回expr3。也可以理解为如果expr为True,则执行expr2,否则执行expr3。

sleep(int):代表过int时间后响应

测试:

?id=1' and sleep(2) --+

这段代码的含义是让网页停止两秒后响应,如果单引号是注入点,那么该页面就会停止两秒后再响应,如果双引号不是注入点,那么网页就会正常响应。

九关的注入点为单引号。

时间盲注猜数据库长度:

id=1?and if(length(database())>8,sleep(2),0)--+

可以发现是立即相应的,说明数据库长度小于=8

第十关:

发现是基于双引号的注入

测试过程:可以发现页面始终是这样,可以考虑下时间盲注

先' ,然后" ,反正就是猜嘛

id=1" and sleep(2) -++

http://www.lryc.cn/news/419924.html

相关文章:

  • 全方位教程:接入视频美颜SDK与直播美颜插件的完整步骤
  • Apache Curator 分布式锁的介绍,以及案例
  • 自动化测试 — selenium + Java
  • 【SpringBoot系列】接口参数的默认值与必要性
  • 茶余饭后(五)
  • 【网络编程详解】
  • C# winform三层架构 实现增删改查( 显示数据,查询数据 显示,查询篇)
  • Apache Kylin 系列入门教程
  • 如何识别并防御漏洞扫描类攻击
  • 冷思考:低代码的AI Agent构建平台能创造价值吗?
  • Spring Boot如何自定义注解?
  • gin框架传入的gin.context参数是池化的
  • AWS注册是否必须使用美元银行卡
  • Spring IOC 注入的3种方式
  • 无人机影像基于机器学习的遥感反演及其结果可视化,定量遥感反演结果出图,相关性分析,指标筛选,特征选择
  • Eclipse插件之Java Dependency Viewer(显示类和包的关系图)
  • H5小游戏出海,如何流量变现?
  • 轻空间六大专利优势:引领气膜建筑新时代
  • LeetCode-day37-2940. 找到 Alice 和 Bob 可以相遇的建筑
  • unity 判断平台
  • PyCharm找不到Python了咋办
  • BRC-100 协议
  • 茶余饭后(六)
  • 秋招复习笔记——八股文部分:网络IP
  • 量化投资基础(四)之AR、MA、ARMA与ARIMA模型
  • LVS(Linux Virtual Server)详解
  • uniapp版本更新除了plus.runtime.getProperty的解决办法
  • MySQL笔记-基础篇(二):多表查询
  • 备战秋招60天算法挑战,Day15
  • 【学习笔记】Matlab和python双语言的学习(整数规划和0-1规划)