炫酷的企业网站模板免费下载,网站建设培训班学费,推广神器app,wordpress演示数据导入在某次项目中#xff0c;首先是发现注入点#xff0c;数据库是Oracle#xff0c;利用方式是时间盲注#xff1a; 因为需要具体数据#xff0c;所以要深入利用#xff0c;手工肯定不方便#xff0c;所以直接上 Sqlmap: Sqlmap也可以扫出该注入点#xff0c;但想要进一步…在某次项目中首先是发现注入点数据库是Oracle利用方式是时间盲注 因为需要具体数据所以要深入利用手工肯定不方便所以直接上 Sqlmap: Sqlmap也可以扫出该注入点但想要进一步查询数据时却发现Sqlmap利用不起来无法查出数据: 为了确定查询数据失败原因此时加上参数 -proxy http://127.0.0.1:1080 使流量经过burp发现某些常用的查询方式在该oracle数据库中会报错如 SELECT banner FROM v$version WHERE ROWNUM1 等可能是数据库版本原因
语句错误返回 语句正常返回
使用其他某些语法也会报错比如 Sqlmap payload 中的 CAST(%s AS VARCHAR(4000)) 、NVL(%s,’ ) 等常见的 COUNT 方法也会报错。
大概确定了查询数据失败原因。那解决问题的方法也很简单就是把有问题的数据库方法找出来然后进行相关的替换就可以了。
打开 Sqlmap 目录下 data/xml/queries.xml 找到 Oracle 的payload 替换其中经过尝试会使程序错误的方法其中 count 可以用 sum(1) 替代。同时也发现了 current_db 和 current_user 是同一个 payload感觉有点问题也顺便替换了替换后的数据如下 接下来就是修改具体的查询数据的语句了其中有些 %s 占位符是命令行的输入如 下面的 TABLE_NAME 的值就是命令行输入的 -T 参数的值 修改完成后再使用 Sqlmap 跑数据不断根据返回确定查询方法根据请求结果调整 SQL 语句最终能够跑起来了。
本以为这次平平无奇的注入就结束了没想到新问题又出现了Sqlmap 跑数据是能跑了但因为注入点的利用方式是时间盲注所以会受网络波动或者数据库响应的影响跑出的数据经常会有错误一看就不对劲而且时间盲注效率很低花时间的很多数据输出很少对于跑数据非常不方便 所以需要想办法解决上述问题。在之前的测试中也发现了当数据库报错时返回的请求结果和正常是不一样的所以可以利用这两个不同的页面差异构造布尔盲注Oracle 数据库可以利用 1/0 报错的特性Mysql就不会报错将时间盲注转换成布尔盲注。
但 Sqlmap 并没有这种检测方法所以要在 /data/xml/payloads/boolean_blind.xml 修改 payload加入以下方法
testtitleOracle AND boolean-based blind - (custom)/titlestype1/stypelevel1/levelrisk1/riskclause1/clausewhere1/wherevector AND [RANDNUM](CASE WHEN ([INFERENCE]) THEN 1 ELSE 1/0 END)/vectorrequestpayload AND [RANDNUM](CASE WHEN ([RANDNUM][RANDNUM]) THEN [RANDNUM] ELSE 1/0 END )/payload/requestresponse comparison AND [RANDNUM](CASE WHEN ([RANDNUM][RANDNUM1]) THEN [RANDNUM] ELSE 1/0 END) /comparison/responsedetailsdbmsOracle/dbms/details/test使 Sqlmap 能够按照自定义的语句查询数据结果 最终通过不断的测试所有问题均已解决能够非常高效的跑出具体的数据