前两篇文章都是基于目标系统允许union,order by语句

并且可以读取infomation_schema元数据库

如果遇到的是安全方面做得很好的应用,进行了权限限制,那么我们有什么办法呢?

猜测当前表的列名(字段名):

' and [猜测字段名] is null --

如果结果是:Unknown column '[猜测字段名]' in 'where clause'

说明这个字段不存在

如果结果是没有反应,则证明该字段存在:

比如:' and user is null --

于是我就想到了:是否可以对字段名进行爆破,我从kali中搜索下有没有相关的字典:

我随便选用一个字典,当我查看其中内容时候发现有些是#开头的

实际中,应该把这些#开头的过滤掉,因为可能会影响结果

现在的column.txt应该就是我们需要的字典

利用Burp的Intruder:设置变量

然后加载刚才的字典:

不需要对payload编码:

然后就可以开始了:

通过观察发现,长度为4000多的返回正常的页面

进一步排序,就可以发现具体的字段名:

类似地,我们也可以猜测当前表的表名:

' and [猜测表名].user is null --

为什么是.user呢?因为上边已经成功猜测到了user字段名

如果这个表不存在,那么这个列也不会存在,于是可以猜测表名:

错误情况:

正确情况:什么都不会返回

找到字典进行爆破

成功爆破出users表

类似的思路:可以继续加入:' and [猜测数据库名].[猜测表名].user is null --

就可以猜测出当前数据库名称了

如何猜测当前数据库其他表的表名?

' and (select count(*) from [表名])>0 --

意外收获:库名直接出来了

接下来类似上边的方法,进行爆破

成功猜出guestbook表和users表

继续猜测表中的信息:

‘ or [字段名]='[猜测值]

通过上面的步骤已经成功猜到字段名user了

猜测正确是上面的结果,说明存在user为admin的用户

猜测错误的话:什么都不会返回

这种无脑猜测不太有智慧,我们可以结合其他的语句,比如:

' or user like '%a%

这一句话猜测的是:只要数据库中有user包含字符a的,全部查出来

成功,查到了两个用户

知道用户后就可以进一步猜测密码:URL编码后结果如下
'%20or%20user%3d'admin'%20and%20password%3d'5f4dcc3b5aa765d61d8327deb882cf99

(我对猜测的密码进行了MD5加密)

Kali学习笔记41:SQL手工注入(3)的更多相关文章

  1. CUBRID学习笔记 41 sql语法之select

    cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...

  2. CUBRID学习笔记 41 sql语法之groupby 等

    cubrid的中sql查询语法groupby GROUP BY ... HAVING Clause 按dept_no分组 SELECT dept_no, avg(sales_amount) FROM ...

  3. Kali学习笔记42:SQL手工注入(4)

    前三篇文章都是在讲发现SQL注入漏洞 如何查询得到所有的信息 那么另一条思路还未尝试过:能否修改数据? 例如这样: '; update users set user='yiqing' where us ...

  4. 小白日记41:kali渗透测试之Web渗透-SQL手工注入(三)-猜测列名、表名、库名、字段内容,数据库写入

    SQL手工注入 靶机:metasploitable(低)  1.当无权读取infomation_schema库[MySQL最重要的源数据库,必须有root权限]/拒绝union.order by语句 ...

  5. SQL反模式学习笔记21 SQL注入

    目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...

  6. 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell

    SQL手工注入 1.读取文件[load_file函数] ' union  SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' unio ...

  7. 小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

    SQL手工注入(一) SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.[SQL注入原理] ##服务端程序将用户输入参数作为查询 ...

  8. SQL手工注入基础篇

    0.前言 本篇博文是对SQL手工注入进行基础知识的讲解,更多进阶知识请参考进阶篇(咕咕),文中有误之处,还请各位师傅指出来.学习本篇之前,请先确保以及掌握了以下知识: 基本的SQL语句 HTTP的GE ...

  9. 【新手篇】搭建DCN漏洞靶机及简单的SQL手工注入

    很多新手小白入门后发现想要学好“网安”技术,除了掌握基础理论知识,更需要经常模拟不同的漏洞环境,但是如果使用外网服务器练习,会存在一定风险,因此能够搭建一个本地的模拟环境去测试漏洞将是一个不错的方案. ...

随机推荐

  1. SQL语句50题

    -- 一.创建教学系统的数据库,表,以及数据 --student(sno,sname,sage,ssex) 学生表--course(cno,cname,tno) 课程表--sc(sno,cno,sco ...

  2. 记录一次go性能调试的过程

    安装 go, git, go-torch 备注, go1.11后, 集成了 go-torch

  3. GO语言一行代码实现反向代理

    本文,介绍了什么是反向代理,如何用go语言实现反向代理. 至于他的标题, "GO语言一行代码实现反向代理 | Writing a Reverse Proxy in just one line ...

  4. [转] 2017-11-20 发布 另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新

    目的:vue-cli构建的vue单页面应用,某些特定的页面,实现前进刷新,后退不刷新,类似app般的用户体验.注: 此处的刷新特指当进入此页面时,触发ajax请求,向服务器获取数据.不刷新特指当进入此 ...

  5. Ionic2生成的main.js执行时间10s+

    写个随笔记录下. 经过一周多各种莫名其妙的研究与分析,然后在论坛中大神给一个命令完美解决之. ionic build android --prod --release

  6. CocosCreator检测动作执行完毕的方法~之一吧,应该= =

    解决方案是利用动作序列,在动作后面跟一个回调函数,然后再利用之前设置好的动作执行完毕标志,即可完成动作结束的判断!Bingo!

  7. IE8 disable 兼容行问题

    在chrome 下 如果样式设置为disabled 则不能点击, 但是在IE9 或者IE8 则还是可以点击

  8. INotifyPropertyChanged 接口 CallerMemberName属性

    调用方信息 使用调用方信息属性,可以获取关于调用方的信息传递给方法. 可以获取源代码.行号在源代码和调用方的成员名称的文件路径. 此信息用于跟踪,调试和创建诊断工具非常有用.若要获取此信息,则使用适用 ...

  9. MySql恢复密码的过程

    密码是一个非常重要的东西,所以往往设置的很复杂,也往往一不小心.......就忘了  : ( 很多童鞋在Linux下看到一堆命令行往往都是一脸懵逼,不知从何下手,这里记录了下基本的恢复操作以备不时之需 ...

  10. 手把手教你从ESXI部署到vSphere web Client管理控制

    作为实验环境,一台物理机即可 既然是实验环境,那么首先把这个物理机装成ESXI6.5的宿主机并配置网络系统 第二步骤就是在ESXI上面导入OVF文件,注册一台虚机,作为数据管理中心 第三步骤就是基于这 ...