Mysql注入读文件
mysql数据库在渗透测试过程中能够使用的功能还是比较多的,出了读取数据之外,还可以进行读写(但前提是权限足够)。
读文件前提:
1、用户权限足够高,尽量具有root权限。
2、secure_file_priv不为NULL
Mysql文件读写函数
举例:select load_file(’/etc/hosts’)
上面的例子是有条件限制的:
1、必须有权限读取并且文件必须完全可读。
and (select count() from mysql.user)>0 /如果结果返回正常,说明具有读写权限./
and (select count() from mysql.user)>0 /* 返回错误,应该是管理员给数据库账户降权了*/
2、欲读取文件必须在服务器上
3、必须指定文件完整的路径
4、欲读取文件必须小于max_allowed_packet
如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空。比较难满足的就是权限。
在windows下,如果NTFS设置得当,是不能读取相关的文件的,当遇到administrators才能访问的文件,
users就不能实现用load_file读取文件了。
在实际的注入中,我们有两个难点需要解决:
1、绝对物理路径。
2、构造有效的畸形语句。
在很多PHP程序中,当提交一个错误的查询时,如果display_errors=on,程序就会暴露web目录的绝对路径,只有知道路径,那么对于一个可以注入的PHP程序来说,整个服务器的安全将受到严重的威胁。
关于mysql into outfile注射,要使用into outfile 把代码写到web目录取得webshell首先需要3大先天条件: