sqlmap 简单使用
sqlmap 简单使用
环境:phpstudy:MySQL5.4.7
介绍
sqlmap是一个开源的渗透测试工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。它有一个强大的检测引擎,许多适合于终极渗透测试的小众特性和广泛的开关,从数据库指纹、从数据库获取数据到访问底层文件系统和通过带外连接在操作系统上执行命令。
官方网址:http://sqlmap.org
1. 命令行对单一url进行探测
对单一url探测,使用参数-u或者--url
rul格式:http(s)/targeturl[:port]/[...]
例如:
sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-1?id=1" --banner
Banner信息,在banner信息中可以得到软件开发商,软件名称、版本、服务类型等信息

2.扫描文件中的url
针对文本中的url进行注入扫描:

sqlmap -m /work/url_text.text --banner
接着在这里就会自动的进行探测,如果我们使用相同的url(我们就是这么使用的),那么这里就不会反复探测同一个url了

3.配置sqlmap.conf扫描url

sqlmap -c /etc/sqlmap/sqlmap.conf

结果都是一样的
4.利用Google hacking语法进行连接
sqlmap -g "inurl:.php?id=1"
由于连接校园网,故而不能使用,附上一张别人的

2.请求参数设置1
1.sqlmap设置http方法
SQLmap会自动探测在过程中使用合适的http请求方法。但是在某些情况下,需要青志使用具体的请求方法。例如,put,强制指定 --method=METHOD
2.sqlmap设置post提交参数
强制修改:--method=post
隐式修改:data="username=admin"
例子:slq-labs
sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-11/" --data="uname=admin&passwd=admin&submit=Submit" -f --banner


2.指定分隔符
如果&在post或者是get传递的参数中,那么就需要设置分隔符
--param-del=";"
直接使用;不加上设置的话会出问题
3.请求参数设置2
1.sqlmap设置user-agent
默认情况下,SQLmap使用如下用户代理头执行HTTP请求:sqlmap/1.0-dev-xxxxxx(http://sqlmap.org)
如果服务器能够进行一些防护,那么就会被阻挡
可以通过自定义用户代理作为选项的参数,可以使用选项user-agent来伪造它
此外,可以通过--random-agent,从user-agent.txt文件中随机选择一个代理头。
user-agent不能够乱写,如果乱写会报错,连接会中断。
通过sqlmap -hh,查看详细帮助,看如何写这个user-agent

查看http头
利用wireshark抓包


使用随机agent
sqlmap -u "10.0.0.2/sqli-labs-master/less-1?id=1" --random-agent
如果要对user-agent位置进行SQL注入探测,需要设置--level 3
http://10.0.0.2/sqli-labs-master/Less-18/
2.sqlmap设置host
level 5 检测

3.sqlmap设置referer
伪造HTTP Referer值是可能的。默认是没有显式设置,HTTP请求不会发送HTTP引用头
4.sqlmap设置http
--headers="Host:www.host.com\nUser-agent:user-agent"
每一个头都需要写一个\n
4.sqlmap设置请求参数3
1.SQLmap设置HTTP协议认证
SQL中设置HTTP协议认证的参数:--auth-type和--auth-cred
其中--auth-type支持basic,digest,ntlm
--auth-cred认证语法为:username:password
针对弹出验证窗口的,这个账号密码需要时正常的账号密码

2.SQLmap设置HTTP代理
隐藏真的ip
设置参数:--proxy,--proxy-cred,--proxy-file,--ignore-proxy

--proxy设置代理格式:
如果不需要代理:
--proxy http(s):ip[:port]
如果需要代理:使用--proxy-cred
--proxy-cred username:password
--proxy-file用来设置多条代理在文件中
--ignore-proxy:忽略系统范围设置的HTTP(S)代理服务器
数据先发送到代理服务器,然后代理服务器的端口号发送到目标
随便找一个代理,随便找一个网站,然后。。。嘿嘿嘿,愿望是美好的,现实是残酷的,代理用不了

然后考虑给整一个--proxy-file

3.SQLmap设置Tor隐藏
隐藏网络地址
参数:--tor,--tor-port,--tor-type,--check-tor
首先需要安装tor
apt-get install tor
启动服务
service tor start
查看状态
service tor status

sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-18/" --data="uname=admin&passwd=admin&submit=Submit" --tor --tor-type https --check-tor
如果拥有自己的vps就可以使用tor网络进行扫描,隐藏真实的ip地址
4.SQLmap设置延迟
SQLmap探测过程中会发送大量的探测payload到目标,如果默认情况过快的发包速度会导致目标预警。为了避免这样的情况发生,可以在探测设置SQLmap发包延迟。默认情况下,不设置延迟。
--delay 0.5 设置延迟0.5秒
5.sqlmap设置请求参数4
1.SQLmap设置超时
在考虑超时HTTP(S)请求之前,可以指定等待的秒数。有效值是一个一个浮点数,可以为10.5秒。默认设置为30秒。
例如:--timeout 10.5
首先探测链接上对面的URL之后,才会发送http请求,接着才会触发--timeout设置。发送http请求,超过10.5秒都还没有接受到返回,SQLmap就会认为对方可能无法接受请求,可能就会重新发送新的请求。

2.SQLmap设置重试次数
--retires count

3.SQLmap设置随机化参数
在某些情况下,要对单一url中的某些参数进行探测, 如果只针对参数的固定值进行探测,服务器接受到之后,进行探测,很容易被服务器发现。所以就需要使用随机化参数来进行掩饰。
SQLmap可以指定每次请求期间随机更改其值的参数名称。长度和类型根据提供的原始值保持一致。
--randomize 参数名称
4.SQLmap设置日志过滤目标
日志郭晨中会记录大量信息,过滤具体目标进行探测
与使用选项-l使用从提供的日志解析的所有主机不同,可以使用python正则表达式,用来过滤所需的日志。
6.sqlmap设置请求参数5
1. SQLmap设置忽略401
忽略未授权响应
--ignore-401 参数用来忽略未验证错误
如果想测试偶尔返回http错误401(未授权的)站点,而想忽略它并在不提供凭证的情况下继续测试,可以使用--ignore-401

2.SQLmap设置HTTP协议私钥
当web服务器需要适当的客户端证书用来身份验证的私钥时,可以使用这个选项。提供的应该是一个PEM格式的key_file,其中包含了证书和私钥。
--auth-file 文件名
3.SQLmap设置安全模式
保证会话的完整性
某些情况下,SQLmap会出现多次访问目标,不会正常的访问目标,从而导致链接的断开。
有时,如果执行了一定数量的不成功请求,则在此期间的web应用程序或检测技术就会销毁会话。这可能发生在SQLmap检测阶段或利用任何盲注类型。原因是SQL有效负载不一定返回输出,因此可能会向应用程序会话管理或技术检测发出信号。
--safe-url 指定url
--safe-post 指定对应提交的post参数
--safe-req 读取对应的文件,http文件内容
--safe-freq 对应多条探测,日志中的内容(上一句的加倍)
通过设置,SQLmap将访问每一个预定义数量的请求,而不对某个安全URL执行任何类型的注入。
尤其是大型探测是,以免因为连接的断开而导致失败。
4.SQLmap设置忽略URL编码
据参数的位置(例如GET),默认情况下它的值可以是URL编码的。在某些情况下,后端web服务器不遵循RFC标准,需要以原始的非编码形式发送值。在这种情况下使用--skip-urlencode。
--skip-urlencode 不进行url加密,如此发送大服务器之后进行对应的操作
获取数据库基本信息
sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-12/" --data="uname=admin&passwd=admin&submit=Submit"
查询有哪些数据库
sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-12/" --data="uname=admin&passwd=admin&submit=Submit" -dbms mysql -dbs
查询security数据库中有哪些表
sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-12/" --data="uname=admin&passwd=admin&submit=Submit" -dbms mysql -D security -tables
查询tes数据库中security表有哪些字段
sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-12/" --data="uname=admin&passwd=admin&submit=Submit" -dbms mysql -D security -T users -columns
sqlmap -u "http://10.0.0.2/sqli-labs-master/Less-12/" --data="uname=admin&passwd=admin&submit=Submit" -dbms mysql -D security -T users -C "id,username,password" -dump
sqlmap 简单使用的更多相关文章
- SQLMap简单尝试
第一次完成了一个注入呢,虽然是恬不知耻的用sqlmap跑出来的 简单介绍注入时后台的数据等级,有助于后面的理解 ①可以类比成一个装着excel文件的文件夹,每一个excel文件就相当于一个数据库 ②库 ...
- sqlmap简单使用
就以实验吧上那个简单的sql注入题为例吧,不过那道题确实经典,把sqlmap的整个使用过程都展现了一遍,先奉上那道题的地址:http://ctf5.shiyanbar.com/web/index_3. ...
- sqlmap简单中文说明
首先下载需要的文件,如果是windows环境直接到http://sqlmap.org/下载安装所需要的文件即可. 更新 svn checkout https://svn.sqlmap.org/sqlm ...
- sqlmap简单流程使用
-u “(url)” 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: 1.基于布尔的盲注,即可 ...
- sqlmap简单使用方法
sqlmap使用 注入点 http://1xx.xxx.xxx.xxxx/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit# 通 ...
- 初识sql注入及sqlmap
对于sql注入小白的我,上午在红黑联盟的网站上恶补了一下sql注入的基础知识,(走马观花)似乎明白sql注入是怎么一回事,也看了一些关于sqlmap的资料,再次记录一下吧 下面是关于sqlmap这个工 ...
- web安全学习笔记
论坛&资讯 http://www.metasploit.cn http://www.freebuf.com http://www.backtrack.org.cn/ http://www.ha ...
- 3_初学sql注入
sql注入的分类:布尔型 报错型 可联合查询型 多语句查询型 基于时间延迟注入 1.注释符 # /* -- 2.过滤空格注入 使用/**/或()或+代替空格 3.多条数据显示 concat(str1, ...
- Pikachu漏洞练习平台实验——SQL注入(四)
1.概述 1.1发生原因 SQL注入漏洞,主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄 ...
- vulnhub~MyExpense
最近有点忙,这几天的vulnhub断更了,今天试着做了一下myexpense,当然想要一帆风顺是不可能的,哪怕是有别人的steps 和walkthrough.所以就遇到的坑总结如下: 一般套路就是nm ...
随机推荐
- 算法5: LeetCode_单链表_两数相加
题目: * 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. * 请你将两个数相加,并以相同形式返回一个表示和的链表. * 你可 ...
- day16 正则表达式 & 反射 & Java内存模型(JMM)
day16 class 1)获取一个类的所有信息(变量.方法.构造方法) 2)创建类对象newInstance() Field 1)访问变量或给变量赋值 Method 1)执行具体类对象的指定方法 3 ...
- Java常用开发文档及工具
一.实用工具/网站 1.PHP中文网:https://www.php.cn/ 2.Json工具:http://www.bejson.com/ 3.IT大哥导航:https://itdage.com/ ...
- Day29 Linux相关命令的使用
今日内容 基本概念 安装 基本命令 在linux上安装软件 jdk mysql jdk Nginx的安装 一.概述 1.Unix linux基于Unix,Unix由贝尔实验室在1969年开发 一开始由 ...
- JavaScript入门⑥-WEB浏览器API
JavaScript入门系列目录 JavaScript入门①-基础知识筑基 JavaScript入门②-函数(1)基础{浅出} JavaScript入门③-函数(2)原理{深入}执行上下文 JavaS ...
- 动手实验查看MySQL索引的B+树的高度
一:文中几个概念 h:统称索引的高度: h1:主键索引的高度: h2:辅助索引的高度: k:非叶子节点扇区个数. 二:索引结构 叶子节点其实是双向链表,而叶子节点内的行数据是单向链表,该图未体现. 磁 ...
- VSCODE 中.art文件识别为html文件
setting.json文件中 { "git.ignoreMissingGitWarning": true, "explorer.confirmDelete": ...
- 线程、GIL全局解释器锁、进程池与线程池
目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 多线程实现TCP服务端并发 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程 ...
- 【Redis场景2】缓存更新策略(双写一致)
在业务初始阶段,流量很少的情况下,通过直接操作数据是可行的操作,但是随着业务量的增长,用户的访问量也随之增加,在该阶段自然需要使用一些手段(缓存)来减轻数据库的压力:所谓遇事不决,那就加一层. 在当前 ...
- 【转载】EXCEL VBA 同时选择多个工作表的方法
如果要用VBA同时选择多个工作表,可以利用数组或设置"Select"方法的参数为"False"来扩展所选择的内容,如下面的一些代码: 1.用工作表名称: ...