Ywc's blog

Sqlmap 使用总结

Word count: 889Reading time: 3 min
2018/07/05

最新总结

  1. --batch 在运行过程中无需做出判断

  2. 判断waf --identify-waf

  3. 绕waf --tamper xxx.py

    • -–tamper=TAMPER 可以查看 tamper/ 目录下的有哪些可用的脚本。

一般注入流程(mysql)

  1. 验证注入
1
sqlmap -u “注入点URL”

从中可以发现存在注入的类型,数据库类型和web应用程序PHP和Apache等版本信息。

  1. 列举数据库名
    1
    2
    sqlmap -u "注入点" --dbs
    sqlmap -u "注入点" --current-db #列举当前使用的数据库
  2. 查询某一数据库的所有表名
    1
    sqlmap -u "注入点" -D 数据库名 --tables
    4.列举这一数据库的表的所有列(字段)
    1
    sqlmap -u "注入点" -D 数据库名 -T 表名 --columns
  3. 暴字段内容
    1
    sqlmap -u "注入点" -D 数据库名 -T 表名 -C "要爆的字段名" --dump
    爆一个字段的话可能会很慢或者出错,全部暴出最好。

可以在后面加个 –batch 可以不用手动选择yes或no的选项。

sqlmap tamper 的使用

可以进行各种绕过防火墙和waf

1
--tamper xxx.py  (.py可以不加)

eg:python sqlmap.py -u “” – tamper base64encode.py

普通的tamper搭配方式

1
2
3
4
tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,
charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,
nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2plus,
space2randomblank,unionalltounion,unmagicquotes

数据库为MSSQL的搭配方式

1
2
3
4
tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,
nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,
space2dash,space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,
unmagicquotes

数据库为Mysql的搭配方式

1
2
3
4
5
tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,
greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,
multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,
space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,
versionedkeywords,versionedmorekeywords,xforwardedfor

常用脚本用法

apostrophemask.py UTF-8编码
apostrophenullencode.py unicode编码
appendnullbyte.py 添加%00
base64encode.py base64编码
between.py 以”not between”替换”>“
bluecoat.py 以随机的空白字符替代空格,以”like”替代”=“
chardoubleencode.py 双重url编码
charencode.py url编码
charunicodeencode.py 对未进行url编码的字符进行unicode编码
equaltolike.py 以”like”替代”=“
halfversionedmorekeywords.py在每个关键字前添加条件注释
ifnull2ifisnull.py 以”IF(ISNULL(A), B, A)”替换”IFNULL(A, B)”
modsecurityversioned.py 条件注释
modsecurityzeroversioned.py 条件注释,0000
multiplespaces.py 添加多个空格
nonrecursivereplacement.py 可以绕过对关键字删除的防注入(这个我也不知道怎么说好,看例子。。。)
percentage.py 在每个字符前添加百分号(%)
randomcase.py 随即大小写
randomcomments.py 随机插入区块注释
sp_password.py 语句结尾添加”sp_password”迷惑数据库日志(很。。。)
space2comment.py 以区块注释替换空格
space2dash.py 以单行注释”–”和随机的新行替换空格
space2hash.py 以单行注释”#”和由随机字符组成的新行替换空格
space2morehash.py 没看出来和上面那个有什么区别。。
space2mssqlblank.py 以随机空白字符替换空格
space2mssqlhash.py 以单行注释”#”和新行替换空格
space2mysqlblank.py 以随机空白字符替换空格
space2mysqldash.py 以单行注释和新行替换空格
space2plus.py 以”+”替换空格
space2randomblank.py 随机空白字符替换空格
unionalltounion.py 以”union all”替换”union”
unmagicquotes.py 以”%bf%27”替换单引号,并在结尾添加注释”–”
versionedkeywords.py 对不是函数的关键字条件注释
versionedmorekeywords.py 对关键字条件注释

Refererence

sqlmap使用大全:http://www.php.cn/php-weizijiaocheng-391039.html

http://www.vuln.cn/1992
Sqlmap的命令介绍,中英文对照

http://www.51xkx.cn/?p=228

https://blog.csdn.net/zgyulongfei/article/details/41017493

https://www.cnblogs.com/r00tuser/p/7252796.html

https://www.cnblogs.com/handt/p/855fc3559d82e3f133a0bc314bfedc29.html

CATALOG
  1. 1. 最新总结
  2. 2. 一般注入流程(mysql)
  3. 3. sqlmap tamper 的使用
    1. 3.1. 普通的tamper搭配方式
    2. 3.2. 数据库为MSSQL的搭配方式
    3. 3.3. 数据库为Mysql的搭配方式
    4. 3.4. 常用脚本用法
    5. 3.5. Refererence