0 环境及工具
操作系统: Windows10
, Kali2024
, CentOS6.9
工具: Burpsuite
, AntSword-蚁剑
,
1 基础题目之 SQL 注入
审题:
![[课堂/实训/assets/Pasted image 20240709215659.png]]
发现一点关联点:
![[课堂/实训/assets/Pasted image 20240709215740.png]]
尝试修改 id 以达到 SQL 注入目的:
![[课堂/实训/assets/Pasted image 20240709215928.png]]
发现内容发生修改,说明通过修改 URL 能够使得SQL 语句本身执行。同时可以发现到程序执行错误(没有内容产生)。
但是存在问题:
- SQL 语句过滤掉了空格,所以使用
/**/
代替空格,起到分开语句的作用 - 整个 id 值还是包围在括号内,所以尝试使用
#
等注释掉后面的括号(如果#
能成功,说明数据库为 mysql )
![[课堂/实训/assets/Pasted image 20240709221547.png]]
发现报错,看来这个 SQL 语句并没有那么简单。尝试查询字段数,为后续使用 union
检索表数据做准备。
![[课堂/实训/assets/Pasted image 20240709223926.png]]
通过从盲注的方式,发现共有 4 列(因为 order by 5
出错 )。当然也可以使用 group by 5
检测。
那么现在尝试去寻找盲点,设置 SQL 语句为 id=('1') and 1=2 union select 1,2,3,4
的方式查看页面显示那些数据。因为 union
前语句恒为假,那么查询的结果集只会显示来自联合查询的结果,即一行四列(1,2,3,4)。
![[课堂/实训/assets/Pasted image 20240709223154.png]]
执行发现,还过滤了 union
语句,所以替换为 unionunion
(因为正则表达式会删除中间的 union
, un
和 ion
连接起来又是一个 union
) 以绕过过滤:
![[课堂/实训/assets/Pasted image 20240709223838.png]]
成功发现显示点,现在回到题目,发现 key 值存放在/tmp/360/key 下,那么我们使用 load_file
函数读取文件。
![[课堂/实训/assets/Pasted image 20240709224344.png]]
成功获取 key,为 8b3h4a7v
。
2 基础题目之文件上传突破
![[课堂/实训/assets/Pasted image 20240712161444.png]]
3 基础题目之文件包含
![[课堂/实训/assets/Pasted image 20240711182132.png]]
![[课堂/实训/assets/Pasted image 20240711182057.png]]
4
命令: `| grep "key" ../key.php
![[课堂/实训/assets/Pasted image 20240711182539.png]]
5
![[课堂/实训/assets/Pasted image 20240711191404.png]]