博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
注入&Sqlmap
阅读量:2084 次
发布时间:2019-04-29

本文共 9417 字,大约阅读时间需要 31 分钟。

中心主题

sqlmap

SQLMap介绍

  • 1.Sqlmap介绍

  • 2.Sqlmap环境安装

  • 3.sqlmap下载

    • sqlmaap版本查看

sqlmap获取目标

  • 1.sqlmap直连数据库

    python sqlmap.py -d"mysql"//admin@192.168.21.17:3306/testdb" -f --banner --dbs --users

    • -d表示直连
    • –banner 获取banner信息
  • 2.sqlmap URL探测

  • python sqlmap py -u “http://www.target.com/vuln.php?id=1” --banner

  • 3.sqlmap文件读取目标

    • 可以探测多个URL
  • 4.sqlmap google批量注入

    python sqlmap.py -g"inurl:".php?id=1""

sqlmap请求参数设置

  • Sqlmap设置HTTP方法

    • get和put

    • –method=PUT

      • POST在请求的时候,服务器会每次都创建一个文件,但是在PUT方法的时候只是简单地更新,而不是去重新创建
  • Sqlmap设置POST提交参数

  • –method=post
  • 参数 --data= ""
  • Sqlmap设置参数分隔符

  • 1.- -param-del=";"
  • 2.- -param-del="&"
  • Sqlmap设置Cookie头

    在这里插入图片描述

--cookie  --cookie-del  -load-cookies  --drop-set-cookie
- cookie其实就是身份识别

sqlmap请求参数设置2

  • sqlmap设置User-Agent

    –user-agent = ‘指定的user-agent’

    • 参数:–user-agent和–random-agent
  • 2.sqlmap设置Host头

    • 参数:–host
    • host是指定资源所在的服务器位置
  • 3.sqlmap设置referer头、

    • 参数:–referer
    • 对请求中URL的原始获取方
  • 4.sqlmap设置额外http头

    • 参数:–headers

sqlmap设置请求参数3

  • 1.sqlmap设置HTTP协议认证

    • 参数:–auth-type和–auth-cred
  • 2.sqlmap设置HTTP代理

    • 参数:–proxy、–proxy-cred、–proxy-file和–ignore-proxy –tor、–tor-type、–tor-port和–check-tor
  • 3.sqlmap设置Tor隐藏网络

    • Sqlmap中设置Tor网络的参数:–tor, --tor-port, --tor-type, --check-tor
    • 开启tor服务:service tor start
    • 查看tor状态:service tor status
  • 4.sqlmap设置延迟

    • Sqlmap探测过程中会发送大量探测Payload到目标,如果默认情况过快的发包速度会导致目标预警。为避免这样的情况发生,可以在探测设置sqlmap法宝延时。默认情况笑傲,不设置延时。
    • 参数:–delay 0.5 设置延时0.5秒

sqlmap设置请求参数4

  • 1.sqlmap超时设置

    • 在考虑超时HTTP(S)请求之前,可以指定等待的秒数。有效值是一个浮点数,例如10.5秒表示10表半。默认设置是30秒
    • 示例:–timeout 10.5
  • 2.sqlmap设置重试次数

    • SQLMAP中摄入之重试次数
    • 示例:–retries count 设置对应重试次数,默认情况下重试3次
  • 3.sqlmap设置随机化参数

    • SQLMAP可以指定要在每次请求期间随机更改其值的参数名称。长度和类型根据提供的原始值保持一致
    • 示例:–randomize 参数名称
  • 4.sqlmap设置日志过滤目标·

    • 示例:sqlmap -l test.log –scop=”(www)?.target.(com|net|org)”
    • –skip-urlencode 不进行URL加密

sqlmap设置请求参数5

  • 1.sqlmap设置忽略401

    • 示例:–ignore-401 参数用来忽略未验证错误
  • 2.sqlmap设置HTTP协议私钥

    • 示例:–auth-file 文件名
    • 当web服务器需要适当的客户端证书和用于身份验证的私钥时,应该使用此选项。提供的应该是一个PEM格式的key_file,其中包含证书和私钥
  • 3.sqlmap设置安全模式

    • 避免在多次请求失败后销毁会话
    • 示例:–safe-uel,–safe-post,–safe-req,–safe-freq
  • 4.sqlmap设置忽略URL编码

    • 根据参数的位置(例如GET),默认情况下它的值是可以URL编码的。在某些情况下,后端服务器不遵循RFC标准,需要以原始非编码形式发送值。这种情况下就要设置忽略URL编码
    • 示例:–skip-urlencode
      5.避免错误请求过多而被屏蔽
–-safe-url 隔一会就访问一下的安全URL–-safe-post 访问安全URL时携带的POST数据–-safe-req 从文件中载入安全HTTP请求–-safe-freq 每次测试请求之后都会访问一下的安全URL

sqlmap性能优化

  • 1.sqlmap设置持久HTTP链接

    • HTTP报文中谁Connection:Keep-Alive
    • 参数:–keep-alive
  • 2.sqlmap设置不接受HTTP body

python sqlmap.py -u "http://172.17.0.1/Less-1/?id=1" --null-connection
- 常用在盲注的过程。- 参数:--null-connection
  • 3.sqlmap设置多线程

    • 参数:–tread
    • 默认是3个多线程。为了不影响目标站点服务器的性能,SQLMAP可以设置最大的线程数为10
python sqlmap.py -u "http://172.17.0.1/Less-1/?id=1" --banner --thread 5
  • 4.sqlmap设置预测输出

    • 在推理算法中用于检索值字符的顺序统计预测。
    • 参数:–predict-output(两个参数不兼容)

指定位置注入

  • 1.sqlmap注入介绍

  • 2.sqlmap设置指定注入参数

    -p:指定参数进行扫描,不是扫描所有参数,这样可以避免浪费时间到非注入点参数上,从而提高扫描效率。

    python sqlmap.py -u "url" -p "id,user-agent"

–skip跳过指定参数扫描,和-p作用相反,它用来跳过需要扫描的参数。

python sqlmap.py -u "url"  --skip "id,user-agent"

–param-exclude不对包含具体内容参数的请求进行探测,如不对包含token和session参数的请求进行探测

sqlmap -u "url" --param-exclude="token,session"

–skip-static扫描时忽略非动态参数

sqlmap -u "url" --skip-static
  • 3.sqlmap设置url注入位置
  • 当注入点在url上时,除非手动将注入点指向URI上,否则sqlmap不会对url路径执行任何自动测试,必须要在扫描时在url上加星号(*)来指定这些注入点
  • python sqlmap.py -u "http://172.17.0.1/Less-1*/?id=1" --banner

4.sqlmap设置任意注入位置

使用星号(*)来指定注入点

python sqlmap.py -u "http://172.17.0.1/Less-20/?id=1" --cookie="uname=admin*" --banner

注入参数1

  • 1.sqlmap强制设置DBMS

    • 默认情况下 sqlmap 会自动识别探测目标 web 应用程序的后端数据库管理系统(DBMS),sqlmap 支持 的 DBMS 种类。

      • MySQL

      • Oracle

      • PostgreSQL

      • Microsoft SQL Server

      • Microsoft Access

      • Firebird

      • SQLite

      • Sybase

      • SAP MaxDB

      • DB2

        参数 --dbms 数据库类型
    • 可以指定数据库来进行探测,参数–dbms 数据库类型。

  • 2.sqlmap强制设置OS系统

    • 默认情况下 sqlmap 会自动探测目标 web 应用程序的后端操作系统,sqlmap 完全支持的 OS 种类 Linux、 Windows,参数 --os 系统类型。

      参数 --os 系统类型
  • 3.sqlmap关闭负载转换机制

    • –prefix 设置 SQL 注入 Payload 前缀
    • –suffix 设置 SQL 注入 Payload 后缀
  • 4.sqlmap关闭字符转义机制

    • –no-escape 关闭字符转义机制

注入参数2

  • 1.sqlmap设置union查询表

    • –union-from 设置union查询表
  • 2.sqlmap设置DNS露出攻击

    • –dns-domain来进行DNS泄露攻击。
  • 3.sqlmap设置二次注入

    • 参数:–second-order
    • 有时注入结果显示在别的页面,此时需要用此参数指明显示注入结果的页面,该参数后跟一个URL。
  • 4.sqlmap识别指纹

    • 参数:-f或–fingerprint
    • 查看数据库指纹信息

sqlmap检索DBMS信息

  • 1.sqlmap检索DBMS Banner

    • #获取后端数据库的 banner 信息, 参数 --banner 或者 -b
  • 2.sqlmap检索DBMS当前用户

    • 获取 DBMS 所有用户, 参数 --users
  • 3.sqlmap检索DBMS当前数据

  • 4.sqlmap检索DBMS当前主机

    获取主机名, 参数 --hostname
  • 5.sqlmap检索DBMS当前数据库

    获取当前数据库名

    参数 --current-db

子主题 13

  • 1.sqlmap探测当前用户DBA

    参数 --is-dba
  • 2.sqlmap枚举DBMS用户

    参数 --users
  • 3.sqlmap枚举DBMS用户密码

    参数 --passwords
  • 4.sqlmap枚举DBMS权限

    使用 --privileges 参数
    • 可以列举数据库管理系统中用户的权限

枚举信息1

  • 1.sqlmap列举数据库名

    • 列举数据库名, 参数 --dbs
  • 2.sqlmap枚举数据库表

    • 列举数据库表名, 参数 --tables

      • 若要指定具体数据库, 添加参数: -D 数据库名字
  • 3.sqlmap枚举数据表列

    • 列举数据库表的列, 参数 --columns

      • 若要指定具体库的指定具体表的列, 添加参数: -D 数据库名字 -T 数据库名字
  • 4.sqlmap枚举数据值

    • 列举数据库表的值, 参数 --dump

枚举信息2

  • 1.sqlmap枚举schema信息

    参数 --schema
    • 可使用参数 --exclude-sysdbs 排除系统数据库。
    • 如果用户只想知道表的条目数, 则可以使用此参数 --count
  • 2.sqlmap检索数据表数量

  • 3.sqlmap获取数据信息

    • –start 1 --stop 3 返回当前数据库表的第一条到第三条信息记录
  • 4.sqlmap设置条件获取信息

    参数 --where

枚举信息3

  • 1.sqlmap暴力破解数据

    表名

    -参数 --common-tables

列名

参数 --common-columns
  • 2.sqlmap读取文件

    sqlmap.py -u "http://xxx/x?id=1" --file-read=/etc/passwd
  • 3.sqlmap写入文件

  • (1)读取本地文件

  • (2)将读取到的文件写入到远程绝对路径

  • --file-write
  • --file-dest
  • 4.sqlmap检索所有信息

    - 返回所有的检索信息, 参数 -a 或者--all

sqlmap系统参数

  • 1.sqlmap执行系统命令

    --os-cmd=OSCMD
  • 2.sqlmap结合metasploit

    python sqlmap.py -u"注入点(可以是一个URL)" --os -pwn

只适用于 MySQL和PoatgreSQL数据库

  • 3.注册表介绍

  • 4.sqlmap注册表操作

  • 读取注册表值

    参数:--reg-read

写入注册表值

参数:--reg-add

删除注册表值

参数:--reg-del

注册表辅助选项

参数:--reg-key,--reg-value,--reg-data,--reg-type

需要配合之前三个参数使用,例子:

$ python sqlmap.py -u http://192.168.136.129/sqlmap/pgsql/get_int.aspx?id=1 --reg-add --reg-key="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1

sqlmap通用参数1

  • 1.sqlmap加载sqlite会话文件

    • 参数:-s
  • 2.sqlmap加载HTTP文本文件

    • 参数:-t
  • 3.sqlmap设置默认选择选项

    • 非交互模式
    • 参数:–batch
  • 4.sqlmap执行系统命令

sqlmap通用参数2

  • 1.sqlmap设置盲注字符集

    • –charset
  • 2.sqlmap爬取URL

    • 参数:–crawl
    • 参数:–crawl-exclude
  • 3.sqlmap在CSV输出中使用的分隔字符

    • 参数:–csv-del
  • 4.sqlmap设置输出格式

    • 参数:–dump-format

sqlmap通用参数3

  • 1.sqlmap探测之前internet连接

    --check-internet
  • 2.sqlmap解析和测试表单的输入字段

    - 参数:–forms
  • 3.sqlmap设置预计完成时间

    --eta
  • 4.sqlmap刷新会话文件

    - 参数:–flush-session

sqlmap通用参数4

  • 1.sqlmap忽略会话中存储的结果

    • 参数:-fresh-queries
  • 2.sqlmap使用hex函数检索数据

    • 参数:–hex
    • 非ASCII数据很容易在传输时出错,使用hex函数可以将目标数据库中数据以十六进制返回。
  • 3.sqlmap设置自定义输出路径

    • 参数:–output-dir
  • 4.sqlmap从响应页面解析错误

    • 参数:–parse-errors

sqlmap通用参数5

  • 1.sqlmap强制设置DBMS编码

  • --encoding=“gbk”
  • 2.sqlmap存储HTTP流量到HAR

    --har=""
  • 3.sqlmap筛选具体payload

    --test-filter=“row”
  • 4.sqlmap过滤具体payload

    -tset-skip=“bnchmark”

sqlmap杂项参数

-z:将参数简写,如 -z ban(banner),bat(batch)

–alert=“dir”:当发现sql注入时,运行主机系统命令

–beep:当发现sql注入时,发出声音哔哔

–cleanup 清除DBMS udf创建的数据表,清除痕迹

–dependencies:显示依赖项

–disable-coloring :关闭高亮显示

–moblie 使用手机端User-Agent

–offline:使用session,不进行联网探测

–purge-ouput:清除output目录下文件

–skip-waf:绕过waf

–sqlmap-shell :使用sqlmap-shell端,无需在使用sqlmap

–tmp-dir=TMPDIR:指定本地目录用来存储文件

–web-root=WEBROOT 指定站点根目录

–wizard:使用向导式

----answer=ANSEWERS 设置问题答案,在跳转403页面时,或者是否退出探测时,可以设置NOR

YES

–gpage 设置goole dork的页码数

–smart:智能探测,当存在大量url时,快速查找可能存在的注入

sqlmap Tamper脚本编写介绍

  • 1.Tamper脚本结构介绍

    • 使用SQLMap提供的tamper脚本,可在一定程度上避开应用程序的敏感字符过滤、绕过WAF规则的阻挡,继而进行渗透攻击。
  • 2.Tamper函数介绍

    • –tamper=TAMPER 利用给定的脚本进行篡改注入数据
  • 3.depenencies函数介绍

  • 4.简单案例

Tamper脚本分析

  • 1.tamper脚本常量文件
    一般:tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,

charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,percentage,randomcase,

space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes

MYSQL:

tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,

halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,

multiplespaces,percentage,randomcase,space2comment,space2hash,space2morehash,space2mysqldash,

space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords,

xforwardedfor

  • 2.tamper分析

tamper 脚本分析MSSQL

  • 1.MSSQL Tamper脚本

  • 2.脚本分析方法

    • 使用就直接看注释
    • 二次开发更改payload内容
  • 3.脚本分析过程中的学习

  • 分析Tamper脚本可以学习绕过技巧以及其它技巧,例如space2maaqlblank.py

  • 4.根据名称判断作用

注入

SQL注入原理

  • 注入原因

    • 语言分类

      • 解释型语言
      • 编译型语言
  • 登录案例讲解

  • CMS SQL注入简单讲解1

  • sqlmap基本用法

MySql注入

  • MySql5.x数据结构

    • schemata
    • tables
    • columns
  • SQL增删改查

  • Mysql常用函数

    • user()
    • database()
    • version()
  • 注释

sqllab靶场搭建

基于报错的SQL注入

  • 注入分类

    • 数字型
    • 字符型
  • get基于报错的sql注入发现

    • 在URL中修改对应ID值
  • get基于报错的sql注入利用

不显示结果的盲注

  • 盲注介绍
  • get基于时间的盲注
  • get基于boolean的盲注

Mysql注入读写文件

  • 注入读文件

  • 注入写文件

  • 写入Webshell

    • union select
    • 分隔符
    • log写入

POST基于错误的注入

  • Burpsuite抓取http请求

  • post基于错误单引号注入

    • less11+burpsuite
  • post基于错误双引号注入

    • less12+burpsuite

get报错注入

  • less6
  • 形式上是两个嵌套查询

SQL注入绕过技术

  • 大小写绕过

  • 双写绕过

  • 编码绕过

    • url在线编码
  • 内联注释绕过

POST基于时间的布尔盲注

  • HTTP POST
  • POST基于时间的盲注
  • POST基于布尔的盲注

HTTP头中的SQL注入

  • 介绍

  • HTTP user-Agent

    • less18
  • HTTP Referer注入

    • 子主题 1

      • 浏览器向web服务器表明自己是从哪个页面链接过来的

POST update语句

  • 介绍

    • 实际sql语句不能有方括号
  • 过滤内容介绍

  • mysql update注入

cookie注入

  • cookie介绍

    • 存储在用户本地终端上的数据
  • ~注入代码分析

    • 用cookie传递参数但是会过滤
  • cookie注入利用

cookie64编码注入

  • 介绍

    • 从二进制到字符
  • base64注入代码分析

  • base64注入代码

    • 插入到cookie对应的位置完成sql注入漏洞的探测

绕过去除注释符的SQL注入

  • mysql中的注释符

  • 去除注释符的代码分析

  • 绕过去除注释符的SQL注入

    • less23

绕过and和or的sql注入

  • 基础

    • mysql大小写不分
    • 十六进制与url编码
    • 符号和关键字替换
    • 内联注释和多行注释
  • 将字符串替换为空

  • sqli-lab25绕过策略

绕过除去union和select的sql注入

宽字节注入

  • GBK占两个字节,ASCLL占一个字节
  • 宽字节注入mysql必须是GBK编码

二次注入分析

  • 与普通注入区别

    • 普通

      • (1)’在http后面构造语句,直接生效
      • (2)普通注入容易被扫描工具发现
    • 二次

      • (1)先构造含有被转入字符的语句
      • (2)将我们构造的恶意语句存入数据库
      • (3)第二次构造语句,结合第一次
      • (4)难以被发现
  • 代码分析

  • 实战

  • 危害

    • 1、之u如Payload触发二次sq’l注入
    • 2、注入1Payload触发XSS攻击

sql注入漏洞简单挖掘

  • 1、CMS环境搭建(espcms)
  • 2.自动化审计工具
  • seay代码审计工具
  • 3、直接挖掘select注入
  • 4、漏洞验证POC

sql注入报错

  • extractvalue函数

    • ExtractValue(xml_frag, xpath_expr)

      • ExtractValue()接受两个字符串参数,一个XML标记片段 xml_frag和一个XPath表达式 xpath_expr(也称为 定位器)
  • updatexml函数

    • UpdateXML(xml_target, xpath_expr, new_xml)

      • xml_target:: 需要操作的xml片段
      • xpath_expr: 需要更新的xml路径(Xpath格式)
      • new_xml: 更新后的内容

asp+access网站技术介绍

  • Web漏洞扫描工具

    • AWVS、APPSCAN、OWASP ZAP
  • SQL注入点利用

    • 注意:Access只有表的概念。
  • Access偏移注入

    • 借用数据库的自连接查询让数据库内部发生乱序,从而偏移出所需要的字段在我们的页面
  • Access偏移注入利用场景

  • Access偏移注入流程

    • 1、判断字段数 order by
    • 2、判断表名 使用union select * from 表名来获取
    • 3、开始偏移注入 利用注入公式来注入

XMind - Trial Version

转载地址:http://zvsqf.baihongyu.com/

你可能感兴趣的文章
MySQL学习笔记——20170809
查看>>
MySQL学习笔记——20170810
查看>>
MySQL学习笔记——20170811
查看>>
MySQL学习笔记——20170812
查看>>
Android内存溢出与优化(五)——防止static引用
查看>>
Scala学习笔记——20170817
查看>>
Scala学习笔记——20170818
查看>>
Scala学习笔记——20170819
查看>>
Scala学习笔记——20170820
查看>>
Python学习笔记——20170821
查看>>
Python学习笔记——20170822
查看>>
Python学习笔记——20170823
查看>>
Python学习笔记——20170824
查看>>
Python学习笔记——20170825
查看>>
Python学习笔记——20170828
查看>>
Python学习笔记——20170830
查看>>
Python学习笔记——20170829
查看>>
Python学习笔记——20170831
查看>>
天堂图片网爬虫
查看>>
设计一个简易的订阅/分发消息的工具
查看>>