数据库
SQLite
SQLite数据库加密解密工具
https://github.com/sqlcipher/sqlcipher
IDEA连接mysql报错 Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope
https://blog.csdn.net/liuqiker/article/details/102455077
Mysql
select version() from dual; SELECT @@version`、`SELECT version(); #查看Mysql版本select @@basedir; 数据库路径
SELECT @@version_compile_machine; #查看架构
show variables like '%compile%'; #查看版本、查看架构
select system_user() #查看系统用户
select current_user() #查询当前用户
select user(); #查询用户
SELECT version() #查询数据库版本
SELECT database() #查询当前连接的数据库
select @@version_compile_os #查询当前操作系统
select now(); #显示当前时间
select @@basedir; #查找到mysql的目录
SHOW VARIABLES LIKE '%plugin%' #查看插件位置
select user,password from mysql.user; #查询Mysql用户/密码
select user,password from mysql.user where user ='root';
select @@secure_file_priv #查看secure_file_priv(当参数 secure_file_priv 为空时,对导入导出无限制当值为一个指定的目录时,只能向指定的目录导入导出当值被设置为NULL时,禁止导入导出功能--可通过配置文件修改.然后重启mysql
select @@datadir; 数据路径
sc delete mysql 服务删除
net stop/start mysql
mysqld--initialize 初始化-需要清空data目录文件
mysqld --install MySQL --defaults-file=“你配置文件的位置” #服务安装
"mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123'; #修改密码
flush privileges;" #更新配置
"CREATE TABLE 新表 AS SELECT * FROM 旧表 " #表复制
drop database `"db_name"` #删除名称带有引号的数据库
创建表 create table yuangong(Username varchar(20),Password int);
插入值 insert into liuyan(1);
添加列 alter table liuyan add column (Sender varchar(20));修改列值 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值删除列 alter table 表名 drop column 列名;
删除行 delete from表名 where 字段名=字段值
删除空行 delete from表名 where 字段名 is null
删除数据库 drop database 数据库名
查看数据库编码 show variables like '%char%';
查看当前数据库编码 show create database test;
改变数据库的编码 alter database app_relation character set utf8;
改变表的编码 ALTER TABLE `table` DEFAULT CHARACTER SET utf8;
改变表字段编码 "ALTER TABLE `tablename` CHANGE `字段名1` `字段名2` VARCHAR(36) CHARACTER SET utf8 NOT NULL;
获取数据库用户名密码
# MySQL 5.6 and below
select host, user, password from mysql.user;
# MySQL 5.7 and above
select host, user, authentication_string from mysql.user;
函数
like - %COM' 以com结尾 com% 以com开头 %com% 包含com字符
日志相关
show variables like '%datadir%'; 查看日志文件位置 cat /etc/my.cnf(在my.cnf中也可查看)
mysql> show binlog events; 查看第一个binlog文件的内容
mysql> show binlog events in 'mysql-bin.000001'; 查看指定binlog文件的内容
mysql> show master status\G; 查看当前正在写入的binlog文件
mysql> show binary logs; 获取binlog文件列表
mysql> show master status\G; 查看当前正在写入的binlog文件
工具 - mysqlbinlog,winscp
配置文件读取
SELECT LOAD_FILE('/etc/passwd' )
SELECT LOAD_FILE('/etc/issues' )
SELECT LOAD_FILE('/etc/etc/rc.local' )
SELECT LOAD_FILE('/usr/local/apache/conf/httpd.conf' )
SELECT LOAD_FILE('/etc/nginx/nginx.conf' )
Mysql配置远程连接
修改/etc/mysql/my.conf - 找到bind-address = 127.0.0.1这一行 - 改为bind-address = 0.0.0.0
为需要远程登录的用户赋权
grant all on *.* to admin@'%' identified by '123456' with grant option; flush privileges; #%表示允许任何ip用admin帐户和密码(123456)访问(admin账户不一定存在)
为root赋权允许远程连接
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
无法远程连接:
网络问题(127.0.0.1能够访问)
防火墙问题(防火墙已关闭)
检查日志(无错误日志)
配置问题(检查/etc/my.cnf) - 没有启用[client],在/etc/my.cnf配置文件中添加以下配置,重启数据库
[client]
port = 3306
socket = /data/sdv1/mydata/mariadb.sock
Mysql字符串处理
mid(MS SQL Server和Oracle不支持) 字符串截取 mid(database(),1,100); --1-100字符
concat 字符串连接
Mysql特例函数
ord、
/*!1*/=/*!2*/ 内联注释:相当于1=2
exists 判断返回值是否为空(为空则报错,否则返回1):select exists(select user());
updatexml
插件路径获取
5.1以下版本,将dll导入到c:/windows或者c:/windows/system32/
5.1以上版本 通过以下查询来获取插件路径:
SHOW VARIABLES WHERE Variable_Name LIKE ""%dir"";
show variables like '%plugin%' ;
select load_file('C:/phpStudy/Apache/conf/httpd.conf')
select load_file('C:/phpStudy/Apache/conf/vhosts.conf')
select load_file('C:/phpStudy/Apache/conf/extra/vhosts.conf')
select load_file('C:/phpStudy/Apache/conf/extra/httpd.conf')
select load_file('d:/phpStudy/Apache/conf/vhosts.conf')
Win7 Mysql忘记登录密码
关闭mysql服务 net stop mysql打开DOS窗口,转到mysql bin目录。
输入mysqld --skip-grant-tables回车 - 此时无提示信息。
再开一个DOS窗口,转到mysqlbin目录
输入mysql回车,如果成功,将出现MySQL提示符 >
连接权限数据库>use mysql; (>是本来就有的提示符,别忘了最后的分号)
改密码:mysql> update user set authentication_string=password("root") where user="root";
刷新权限(必须的步骤)>flush privileges;
退出 > quit;
注销系统,再进入,开MySQL,使用用户名root和刚才设置的新密码登陆。
Myslq - 修改所有表/字段编码
存储过程 CREATE PROCEDURE `pr_convert_dbtab_utf8`(IN dbName varchar(100)) BEGIN declare stop int default 0; declare tabCount int default 0; declare strSql varchar(1000); declare name varchar(100); declare cur CURSOR FOR select table_name from information_schema.tables where table_schema=dbName; declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop = null; OPEN cur; FETCH cur INTO name; WHILE ( stop is not null) DO set tabCount=tabCount+1; set strSql = concat('alter table `',name,'` convert to character set utf8'); set @sql1 = strSql; prepare stmt_p from @sql1; execute stmt_p; FETCH cur INTO name; END WHILE; CLOSE cur; SELECT concat('table: ', tabCount); END; 输入调用存储过程的命令,参数为需要转换的数据库名 mysql> call pr_convert_dbtab_utf8('jiradb'); +-----------------------------+ | concat('table: ', tabCount) | +-----------------------------+ | table: 245 | +-----------------------------+ 1 row in set Query OK, 0 rows affected mysql>
Mysql脱裤脚本
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <?php $conn = @mysql_connect("192.168.241.89", "root", "Vega2010##") or die("X Connect failed"); mysql_select_db("chacha_cloud", $conn); mysql_query("set names 'UTF-8'"); $sql="select username,password,phone from user limit 12500000,500000"; $query=mysql_query($sql); while($row=mysql_fetch_array($query)){ $fp = fopen('t4/14.csv', 'a'); fwrite($fp,'"'.@$row[username].'","'.@$row[password].'"'.'","'.@$row[phone].'"'."\n"); fclose($fp); } echo 'finished'; ?>
SqlServer
xp_cmdshell #执行系统命令/被禁用可通过sql语句解封
memcache
1 stats 查看缓存服务器状态 2 stats items 查看items 3 stats cachedump 32 0 获得缓存key 4 flush_all 清空所有缓存 5 version 版本 6 stats slabs 打印内存信息 7 set/add 将value(数据值) 存储在指定的 key(键) 中 8 replace 替换已存在的 key(键) 的 value(数据值)。 9 append 向已存在 key(键) 的 value(数据值) 后面追加数据 。 10 prepend 向已存在 key(键) 的 value(数据值) 前面追加数据 。 11 get 获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。 12 gets 获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空。 13 delete 用于删除已存在的 key(键)。 14 incr/decr 对已存在的 key(键) 的数字值进行自增或自减操作。 15 stats 返回统计信息例如 PID(进程号)、版本号、连接数等。 16 stats items 显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。 17 stats slabs 显示各个slab的信息,包括chunk的大小、数目、使用情况等。 18 stats sizes 显示所有item的大小和个数。 19 flush_all 清理缓存中的所有 key=>value(键=>值) 对。 20 退出telnet连接 quit
工具相关
1 Navicat for Mysql 2 破解: 3 运行PatchNavicat.exe ,打开之后找到原本安装Navicat for MySQL的运行程序Navicat.exe程,确定。
redis
1 kali下 2 安装 3 get http://download.redis.io/releases/redis-4.0.11.tar.gz 4 tar -zxvf redis-4.0.11.tar.gz 5 cd redis-4.0.11 6 make - 如出现gcc错误 - 安装gcc - apt-get install gcc 再次编译 make MALLOC=libc 7 启动 - cd src - ./redis-server 8 关闭 - ./redis-cli shutdown 9 远程访问设置 10 cd redis-4.0.11 11 vim redis.conf 12 注释掉该IP地址 - # bind 127.0.0.1 13 运行时不受保护 - protected-mode no 14 修该为守护进程 - daemonize yes 15 启动客户端 16 # ./redis-cli(src目录下) 17 修改运行时不受保护 18 # config set protected-mode no 19 设置登录密码 20 # config set requirepass password 21 密码登录 22 # ./redis-cli 23 # auth password 24 客户端远程连接 - redis-cli -h IP -p Port(6379)
mongodb
安装 - Kali下 wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian92-3.6.5.tgz (mongodb.tgz 为Debian 7 Linux 64-bit v3.2 tar -zxvf mongodb.tgz /usr/local/mongodb mkdir -p /usr/local/mongodb/data mkdir -p /usr/local/mongodb/logs vi /etc/mongodb.conf dbpath=/usr/local/mongodb/data master=true logpath=/usr/local/mongodb/logs/mongodb.log logappend=true 启动 cd /usr/local/mongodb/bin ./mongod -f /etc/mongodb.conf & ps -def | grep mongod 开机启动 在/etc/rc.local /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf &
环境变量配置 vi /etc/profile 在最后一行添加下面的代码:export PATH=$PATH:/usr/local/mongodb/bin source /etc/profile 连接 cd /usr/local/mongodb/bin ./mongo
./mongo IP:Port #匿名登录
命令
show dbs #查看默认数据库 db #查看当前数据库
db.addUser('username','password') #创建用户
db.auth('username','password') #验证用户是否存在
db.help() #帮助
show collections #显示所有集合
db.mycoll.drop() #删除集合
db.serverStatus() #查看服务器状态
db.dropDatabase() #删除数据库
exit #退出MongoDB控制台
db.role(集合名称).find() #查看集合内容
db.role(集合名称).dataSize() #查看集合大小
use member - > db.createUser({user:"member",pwd:"password",roles:["readWrite"]}); #创建普通用户
远程连接工具 - robomongo
PostgreSQL
连接工具 psql postgres-# \l #枚举数据库 postgres-# \du 枚举用户 template1=# \dt
数据库类型判断
len和length 当使用and len('a')=1的时候,返回正常页面时,可以推断当前的数据库类型可能是mssql,或mysql,或是db2。反之则可能会是oracle和informix。 @@version和version() "在mysql内,可以用@@version或是version()来返回当前的版本信息。但无法判断是mysql还是mssql时,可以用version()函数来构造判断。 version()>1 返回与@@version>1 相同页面时,则可能是mysql。如果出现提示version()错误时,则可能是mssql。
substring和substr "在mssql中可以调用substring。oracle则只可调用substr SUBSTRING('abc',1,1)=a 返回成功,刚可能是mssql。使用substr('abc',1,1)=a 返回成功,则可能为oracle