asm() 하면 어셈블리어로 바꿔줌 근데 context(arch='', os='')해줘야함
http://docs.pwntools.com/en/stable/shellcraft/i386.html - 32bithttp://docs.pwntools.com/en/stable/shellcraft/amd64.html - 64bit 32bit binary에서 context(arch='i386', os='linux') 이거 써주면 shellcraft.i386.linux.open() 말고 바로 shellcraft.open() 해도 됌 따라서 64bit에서는 context(arch='amd64', os='linux') 하면 마찬가지 ---Hitcon training lab2--- 예시 from pwn import * s = process("./orw.bin")context(arch='i386',os='linux'..
1. NC 연결remote(IP, PORT) 형식으로 연결.IP는 str이고 port는 int형임에 주의p = remote("localhost",1234) 2. Local nc 다음으로 많이 쓰는 local 경우에는 process("PATH") 식으로 연결PATH도 마찬가지로 strp = process("./test") 3. ssh 젤 많이 안쓰이지만 pwnable.kr 쓸 경우 많이 나옴 ssh(username, IP, PORT, PASSWORD) 꼴로 연결, USERNAME, IP, PASSWORD 는 str PORT는 int PORT와 PASSWORD는 각각 앞에 port=, password= 를 붙힘. p = ssh("test", "localhost", post=1234,password="test..
정적 라이브러리와 공유 라이브러리 정적 라이브러리(Static Library) 여러 프로그램에서 사용되는 함수를 포함하는 오브젝트 파일들을 ar명령을 이용하여 하나의 아카이브 파일로 모아놓은 것. 정적 라이브러리 생성 gcc를 이용하여 오브젝트 코드 생성. ar 프로그램을 이용하여 라이브러리 파일(.a) 생성 (명령어 ar rv [.a] [.o]) 정적 라이브러리를 포함하여 컴파일 옵션 : gcc [.c] -o [프로그램명] [.a] 특징링커는 지정된 정적 라이브러리에서 해당 심볼을 정의하고 있는 오브젝트 파일의 사본을 추출해서 실행 파일 내에 포함시킴. 정적 라이브러리를 이용하여 실행 파일을 생성하면 해당 실행 파일 내에 라이브러리 함수의 코드가 포함 됨. 따라서 다른 시스템에서도 잘 동작함. 각각의 ..
linux 환경에서의 메모리 보호기법들 2 (RELRO) RELEO : Relocation Read-Only GOT overwrite 와 같은 공격에 대비하여 ELF 바이너리 또는 프로세스의 데이터 섹션을 보호하는 기술메모리가 변경되는 것을 보호하는 기술 RELRO에는 Partial RELRO 와 Full RELRO 두 가지 모드가 있음 Partial RELRO컴파일 옵션 : gcc -WI, -z, relroGOT 상태 : Writable특징 : 함수 호출 시 해당 함수의 주소를 알아옴Full RELRO컴파일 옵션 : gcc -WI, -z, relro, -z, nowGOT 상태 : Read-Only특징 : ELF 실행 시 GOT에 모든 라이브러리 주소 바인딩 Full-RELRO를 적용하면 .ctors, ..
linux 환경에서의 메모리 보호기법들 (ASLR, DEP, ASCII-Armor, Stack Canary) ASLR : Address Space Layout Randomization 메모리상의 공격을 어렵게 하기 위해 스택이나 힙, 라이브러리 등의 주소를 랜덤으로 프로세스 주소 공간에 배치함으로써 실행할 때 마다 데이터의 주소가 바뀌게 하는 기법. /proc : procees의 줄임말, 프로세스의 정보들이 저장/proc/self : 현재 실행되고 있는 프로세스의 정보가 담겨있는 디렉토리/proc/self/maps : 현재 실행되고 있는 프로세스의 주소 맵 ASLR을 해제하는 명령 echo 0>/proc/sys/kernel/randomize_va_spacerandomize_va_space=0 : ASLR..
PLT와 GOT Dynamic Link 방식으로 컴파일 했을 때 PLT 와 GOT를 사용하게 된다. Static Link 방식으로 컴파일 했을 시 라이브러리가 프로그램 내부에 있어 필요하지 않지만,Dynamic Link 방식으로 컴파일 하면 라이브러리가 프로그램 외부에 있기 때문에 함수의 주소를 알아오는 과정이 필요하다. PLT (Procedure Linkage Table) : 외부 프로시저를 연결해주는 테이블. PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용 가능GOT (Global Offset Table) : PLT가 참조하는 테이블, 프로시저들의 주소가 들어있다. |"call printf@plt"| -> |.plt| ->(jmp got) |.got| Dynamic Link 방식으로 프로..
Static Link 방식과 Dynamic Link 방식 Static LinkStatic Link 방식- 파일 생성시 라이브러리 내용을 포함하여 실행 파일을 만듦.- gcc 옵션 중 static 옵션을 적용하면 Static Link 방식으로 컴파일 됨. Static Link 특징- 실행 파일 안에 모든 코드가 포함되기 때문에 라이브러리 연동 과정이 필요 없음.- 한 번 생성한 파일에 대해 필요한 라이브러리를 따로 관리하지 않아도 됌.- 하지만, 파일의 크기가 커지는 단점이 존재.- 동일한 라이브러리를 사용하더라고 해당 라이브러리를 사용하는 모든 프로그램들은 라이브러리의 내용을 메모리에 매핑 시켜야 함. Dynamic LinkDynamic Link 방식- 공유 라이브러리를 사용하는 방식.- 라이브러리를 하..
- fsop
- overflow
- shellcoding
- FSB
- SQLi
- pwnable
- pwnable.tw
- heap
- 본선가고싶다
- TLS
- exit
- fastbindup
- glibc
- srop
- HackCTF
- 해킹
- pwable
- hacking
- stack reusing
- tcache
- fastbin
- oob
- rt_sigreturn
- codegate
- ebp change
- Total
- Today
- Yesterday