본문 바로가기

분류 전체보기97

z3 모든 경우의 수 from z3 import * # find hidden menu route with z3 solver. input = [BitVec("input[%d]" % i, 32) for i in range(4)] s = Solver() for i in range(4): s.add(input[i] >= 0, input[i] 2018. 9. 30.
syscall socket x86, x86-x64 가끔 문제들을 보면 file descriptor를 싹 닫는 경우가 있다. 이런 경우 socket을 통해 새로운 file descriptor를 생성해주면 된다. sys_mprotect를 사용해 실행 권한을 할당 해 reverse shellcode를 실행 시키는게 대표적이며, sys_socket, sys_connect를 사용한 srop로 직접 리버스 커넥트를 맺을 수 있다. Reverse Connect를 맺게 되면 dup2 처리를 해 stdin / stdout을 제공해준다. x86-x64 기준 sys_socket : rax - 0x29 rdx - 0x0 rsi - 0x1 rdi - 0x2 sys_connect : rax - 0x2a rdx - 0x10 rsi - ptr (ip/port) rdi - fd (s.. 2018. 9. 30.
SCP 명령어로 바이너리를 옮기는 방법 SCP 명령어로 바이너리를 옮기는 간단한 방법.Example)scp -P 2222 alloca@pwnable.kr:/home/alloca/alloca ./ 2018. 9. 30.
ARM 32bit IDAPython - ARM 32bit Add XrefARM 32bit Binary를 분석하다 보면 가끔 역참조 기능이 없는 문자열이 존재한다. 이럴 때 어느 곳에서 문자열이 사용되는지 찾아 역참조를 추가해주는 소스다.from idaapi import * from idc import * from idautils import * from struct import * # ARM xref adder p32 = lambda x : pack(" FOUND : 0x%x" % (addr) To = u32(find_str_offset) From = addr AddCodeXref(From, To, XREF_USER) start_addr = addr + 4 elif addr == 0xFFFFFFFF: print " -> .. 2018. 9. 29.