SQL 入门到入魔(SQL 注入原因和流程)

前言:
在之前校招面试中,sql 被问到频率是真的高,当初为了能够在 sql 这块加分,看了不少书籍,在网上也找了不少资料,走了不少弯路,庆幸的是,每次面试官问到 sql 相关知识,我基本都能对答如流,而且还能从一个小的知识点扯出一大堆的那种,所以呢,今天我想详细给大家分享一下我都学习了啥,文中会给出书籍 + 看过的资料。
SQL 入门
sql 入门随便找一个教程就可以了,我看的是《SQL Server 从入门到精通》《SQL 注入攻击与防御》这两本书,跟着书敲代码即可,感觉一两周周时间就可以快速刷完了,反正命令不用死记硬背,需要用的时候,翻开书本会用就行了,后面去刷一刷 sql 的练习题,
入门阶段最重要的就是要大致知道 sql 有哪些关键字,还有就是关键字直接的执行顺序,例如像 join,have,order by,聚合函数等等,知道个大概就行,之后要多练习,否则很容易一问三不知,至于那里练习,我上面已经跟大家说了。
SQL注入
什么是 SQL 注入
SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息
SQL 的类型 Structured Query Language
DQL: Query, select
DML: Manual, insert update delete
DDL: Define, create drop alter
DCL: Control, grant revoke commit rollback
函数数:字符串函数、数字函数、日期函数
运算符:算术运算符、比较运算符、逻辑运算符、位运算符
IPv4 地址
192.168.1.110
1100 0000 1010 1000 0000 0001
端口
FTP 21
SSH 22
Tomcat 8080
MySQL 3306
Redis 6379
域名(domain name)
顶级域名.com .net .org
国别域名.cn (中国).us (美国)jp (日本)
子域名:
www.baidu.com、 map.baidu.com、 tieba.baidu.com
DNS (Domain Name System)

DNS 解析流程

端口和文件

项目架构

SQL 注入的发生

如何获取数据库信息
show 命令
select + 函数
系统库
MySQL 系统库(5.7)

POST 请求

GET 请求
参数会如何处理?
怎么传入 SQL?
如何结束一个 SQL?
点查询分析器上的红方块,或者直接终止进程.不过,SQL2000 这样做,语句就丢失了,但是 2005 在打开查询分析器时会提示是否恢复.
如何忽略后续语句?
什么语句可以包含两个以上的 select?
1.
2.
SQL注入的完整流程
判断是否可以注入
获得数据库名
获得集名
获取列名
获得数据
其他知识
哈希破解
哈希算法可以检验信息是否是相同的,这样的优势可以节省重复文件传送的时间。举一个生活中很平常的例子,我们在生活工作中会使用一些软件给别人传送文件数据,如果有人传送了一份文件给一个人,然后又有一个人传送了相同的文件给了另外一个人,那么这个社交软件在第二次传送文件的时候会对比两次传送的哈希值,发现是相同的,该软件就不会再次上传文件给服务器了。除此之外,哈希算法还可以检验信息的拥有者是否真实。比如,我们在一个网站注册一个账号,如果网站把密码保存起来,那这个网站不论有多安全,也会有被盗取的风险。但是如果用保存密码的哈希值代替保存密码,就没有这个风险了,因为哈希值加密过程是不不可逆的
子域名挖掘

【配套资料源码】

评论