Danh mục

Giải mã password của SQL Server

Số trang: 7      Loại file: doc      Dung lượng: 40.00 KB      Lượt xem: 15      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

SQL server sử dụng một hàm undocumented ( tạm gọi là hàm không cơ sở ) , pwdencrypt() đểmã hoá mã số của người dùng , chúng được lưu trữ trong bảng sysxlogin của cơ sở dữ liệu chính(master database) . Đây có lẽ là điều mà nhiều người biết . Điều không được công bố là nhữngyếu tố của hàm pwdencrypy() . Bài viết sau sẽ thảo luận về hàm này cũng như những điểm yếutrong cách mã hoá mã số của SQL Server ....
Nội dung trích xuất từ tài liệu:
Giải mã password của SQL Server GiảimãpasswordcủaSQLServer:trangnàyđãđượcđọc lầnCáchthứclưutrữpasswordcủaSQlServer:SQLserversửdụngmộthàmundocumented(tạmgọilàhàmkhôngcơsở),pwdencrypt()đểmãhoámãsốcủangườidùng,chúngđượclưutrữtrongbảngsysxlogincủacơsởdữliệuchính(masterdatabase).Đâycólẽlàđiềumànhiềungườibiết.Điềukhôngđượccôngbốlànhữngyếutốcủahàmpwdencrypy().BàiviếtsausẽthảoluậnvềhàmnàycũngnhưnhữngđiểmyếutrongcáchmãhoámãsốcủaSQLServer.Mộtmãsốkhiđãmãhoátrôngrasao:Sửdụngphươngphápphântíchtruyvấn(QueryAnalyzer),hoặccôngcụSQLmàbạnchọn,thựcthiđoạntruyvấnlựachọnmãsốtừmaster.dbo.sysxloginstạiname=”sa”.Bạnsẽnhậnđượcđoạntrảvềtươngtựnhưđoạnsau:0x01008D504D65431D6F8AA7AED333590D7DB1863CBFC98186BFAE06EB6B327EFA5449E6F649BA954AFF4057056D9BĐólàmãhoácủamãsốcủatàikhoảntruynhập“sa”trongmáycủatôi.Chúngtacóthểnhậnđượcgìtừpwdencrypt()vềcáchmãhoá?ThờigianTruyvầnlựachọnpwdencrypt(“foo”)tạora0x0100544115053E881CA272490C324ECE22BF17DAF2AB96B1DC9A7EAB644BD218969D09FFB97F5035CF7142521576nhưngchỉvàigiâysauvẫnvớitruyvấnpwdencrypttalạinhậnđược0x0100D741861463DFFF7B5282BF4E5925057249C61A696ACB92F532819DC22ED6BE374591FAAF6C38A2EADAA57FDFHaiđoạnmãhoátrênkhácnhaunhưngđầuvàofoothìlạigiốngnhau.Từđâytacóthểsuyluậnrarằngthờigianđóngmộtvaitròquantrọngtrongviệctạoravàlưutrữpassword.Điềunàydẫntớihaingườisửdụngkhácnhausẽcómãhoákhácnhauchodùhọcùngdùng1mãsố.TrườnghợpChạyđoạntruyvầnpwdencrypt(“AAAAAA”)sẽtrảvề0x01008444930543174C59CC918D34B6A12C9CC9EF99C4769F819B43174C59CC918D34B6A12C9CC9EF99C4769F819BTathấyrằngcólẽcó2passwordđượctạoraởđây.Hãyđểtôichianóra0x01008444930543174C59CC918D34B6A12C9CC9EF99C4769F819B43174C59CC918D34B6A12C9CC9EF99C4769F819BBạncóthểnhậnra40kítựcuốicùnggiôngnhư40kítựápchót.Nhưvậycólẽpasswordđãđượclưutrữ2lần?1trongchúnglàpasswordtheokiểubìnhthường,cáicònlạilàkiểuviếthoacủapassword.ClearSaltTừnhữnggìchúngtabiết,sựthayđổithờigiandẫntớithayđổipasswordmãhoá,passmãhoánàyphảisẵnsàngtrướckhiuserđăngnhậpvàohệthốngvàphảicósựđốichiếugiữapassmãhoávàpasscủahọtrongcơsởdữliệu.Trongkếtquảtrên8449305làđầuracủapassquahàmpwdencrypt().Kếtquảnhậnđượcthôngquatrìnhtựsau:Hàmtime()củaCđượcgọivàlàkhởiđầuchohàmsrand().Srand()cungcấpđầuvàochohàmrand()tạoramộtsốnguyênngẫunhiên.SQlchuyểnsốnàythànhkiềushort,tagọisốnàylàSN1.Hàmrand()mộtlầnnữađượcthựcthivàtạonên1sốngẫunhiênkhác,tagọilàSN2.SN1vàSN2đượckếthợpđểtạora1sốnguyên,SN1trởthànhphầnchínhvàSN2làphầnphụ,SN1vàSN2tạothànhsalt.Salttrởthànhpassword.MãhoápasswordMãsốcủangườidùngđượcchuyểnthànhUNICODEnếunhưchưaphảilàkiểunày.Saltsauđóđượcnốithêmvàosaucùng.Tổhợpnàyđượcgửitớihàmmãhoátrongadvapi32.dllđểtạoramãhoásửdụngthuậttoánmãhoáhoặcSHA.Sauđópasswordđượcchuyểnsangdạnguppercase(chữhoa),saltđượcgắnvàocuốivàmộtSHAkhácđượctạora.0x0100Phầnđầucốđịnh84449305Salttừ2hàmrand()43174C59CC918D34B6A12C9CC9EF99C4769F819BMãhoáSHAchữthường43174C59CC918D34B6A12C9CC9EF99C4769F819BMãhoáSHAchữhoaQuátrìnhxácthựcKhimộtngườidùngxácnhậpvàoSQLServercácquátrìnhsaudiễnra.ĐầutiênSQlSeverxácthựcpasswordcủangườinàytrongcơsởdữliệuvàxuất“salt”như84449305trongvídụnêutrên.SaltnàyđượcgắnvàosaupasswordcủangườidùngtạoraSHA.TổhợpnàyđượcsosánhvớitổhợptrongcơsởdữliệuvànếugiốngthìOK.SựkiểmtrapasswordcủaSQLServerQuátrìnhnàyđượcthựcthigầngiốngnhưquátrìnhxácthực.Tuynhiênđầutiênphảitạoratổhợptừtổhợpchữhoa.Mãnguồnchomộtcôngcụtấncôngđơngiảntheokiểutừđiển/////////////////////////////////////////////////////////////////////////////////////SQLCrackCl////Chươngtrìnhtấncôngtheokiểutừđiển//tổhợppasschữhoa.Mộtkhi//đãtìmrathìthửmọitrường//hợpchữthườngcóthể////ĐoạnmãviếtbởiDavidLitchfieldto//đểtấncôngpasswordcủaMicrosoftSQLServer2000//NócóthểđượcthựcthimàkhôngsửdụngCryptoAPI.////(BiêndịchvớiVC++vàliênkếtvớithưviệnadvapi32.lib//ChắcchắnrằngPlatformSDKcũngđãđượccàiđặt!)////////////////////////////////////////////////////////////////////////////////////#include#include#includeFILE*fd=NULL;char*lerr= LengthError! ;intwd=0;intOpenPasswordFile(char*pwdfile);intCrackPassword(char*hash);intmain(intargc,char*argv[]){interr=0;if(argc!=3){printf( ***SQLCrack*** );printf(C:\>%shashpasswdfile ,argv[0 ...

Tài liệu được xem nhiều: