一、sql注入的简介
将一段内容传入到目标网站,这段内容会被当做程序来执行
二、MySQL扩展补充
mysql的结构
- 库
- 表名
- 字段
- 数据
mysql的用户
- 管理员:跨库、文件读写操作
- 普通用户:猜解
判断目标网站的用户类别
- 白盒:读代码
- 黑盒:user()
使用mysql 5.0以上版本
mysql5.0以及5.0以上的版本都存在一个系统自带的系统数据库,叫做:information_schema 5.0以上为多用户。information_schema下面又包含了这几张表:schemata、tables、columns。
表1:schemata:记录了系统中所有的库名,包含一个关键字段
- schema_name:保存的库名
select schema_name from information_schema.schemata
表1:tables:记录了系统中所有的表名,包含两个关键字段
- table_schema:保存的库名
- table_name:保存的表名
select table_name from information_schema.tables where table_schema=xxxx
表二:columns:记录当前系统中的字段名,包含三个关键字段
- table_schema:保存的库名
- table_name:保存的表名
- column_name:字段名
select column_name from information_schema.columns where table_schema=xxx and table_name=xxx
SQL注入的常用函数
- user() 当前所使用的用户名
- datebase() 当前所使用的库名
- version 当前MySQL的版本
三、SQL注入的流程
3.1 简介
常用的注入方法:
- 手工注入
- sqlmap
- python+sqlmap
3.2 sql注入的流程
1. 判断是否存在漏洞
2. 判断目标网站的数据库中的表中有几个字段
3. 找到网页中回显位
4. 找到数据库的库名
5. 找到数据库的表名
6. 找到字段名
7. 找数据
四、管理员身份注入
文件读写
load_file("目标文件") //可以读取文件内容"
select "内容" into outfile "目标文件" //可以向网站目录下的文件里写内容
读取文件结果可能是NULL的可能原因
查看环境变量
show global variables // 全局
show session variables // 会话
设置环境变量
set global 变量名=值
set session 变量名=值
文件读写权限控制
secure_file_priv=null 不允许进行读写操作
secure_file_priv=路径 只允许在特定的目录下进行读写操作
secure_file_priv=' ' 允许随意进行读写操作
真实环境中secure_file_priv 往往都是处于开启状态的,绕过的基本思路就是结合慢查询日志
获取网站根目录的途径
五、php的相关函数
5.1 php的等号
5.2 md5绕过
<?php
for ($a=1;$a<=100000000;$a++){
$md5=md5($a)
if(preg_match('/^0e\d+$/',$md5)){
// \d+ 表示一个或多个数字字符
echo $a;
echo "\n";
echo $md5;
echo "\n";
}
}
?>
5.3 intval
绕过的基本思路
案例:
var_dump(intval(012));
echo"<br>";
var_dump(intval(0xB));
echo"<br>";
var_dump(intval(array()));
echo"<br>";
var_dump(intval(array('1111',22222)));
echo"<br>";
var_dump(intval(1.2));
echo"<br>";
var_dump(intval("1.2"));
echo"<br>";
var_dump(intval("abc123"));
echo"<br>";
var_dump(intval("123abc"));
echo"<br>";
var_dump(intval("012"));
echo"<br>";
var_dump(intval(3+4));
var_dump(intval(3*4));
var_dump(intval(03+4));
var_dump(intval(03*4));
echo"<br>";
各种进制的开头
十进制:
二进制:0b 0B
八进制:0 0O 0o
十六进制:0x 0X
5.4 strpos
5.5 is_array()
安全隐患/绕过思路
5.6 perg_match
返回值
绕过思路
3.7 str_replace
绕过思路