본문 바로가기

시스템/등드등

(8)
DLL이란? DLL(Dynamic Link Library) 이란 일반적으로 확장자가 DLL인 파일을 말한다. 라이브러리라는 말에서 알 수 있듯이 다른 프로그램에서 이용하는 함수들을 모아둔 것이다. 하지만 표준 C 라이브러리 같은 일반 라이브러리의 파일과는 구조나 사용법이 다소 다르다. 일반 라이브러리는 소스코드를 컴파일한 결과로 생성되는 객체 파일(.obj)을 그대로 모아둔 것이다. 링커는 이 중에서 필요한 함수가 포함된 객체 파일을 꺼내서 실행 파일에 결합하는 '정적 링크' 방식이다. 정적 링크는 C/C++ 프로그램의 소스 코드를 기계어 코드로 변환하는 컴파일 단계를 거치게 된다. 여기서 C/C++에는 수많은 표준함수들이 존재하고 있는데 이들은 표준 라이브러리 파일 안에 어셈블리 코드의 형태로 담겨 있다. 소스 코..
웹 메일 및 채팅 앱 구현 웹 메일과 채팅 앱을 구현했다. 개발 계획: DB: DB_final.docxUI 설계: 기능: 웹 메일 시연 영상: 채팅 앱 시연 영상: 웹 메일 GitHub 주소 : https://github.com/pu1et/test_project채팅 앱 GitHub 주소: https://github.com/pu1et/android-chat-final
Wannacry 1차 정리본 좀 더 자세히 정리한 후 2차 업뎃 예정
pwntools 간단 정리 쓸 건 많지만 차차 정리하고 일단 생각나는 것부터 적어본다:) 1. 접속 nc p=remote(IP,PORT)p=remote(str,int) = ('localhost',1234) local p=process('PATH')p=process(str) = ('./test') ssh p=ssh(username, IP, PORT, password)p=ssh(str,str,str,str) =('사용자이름', 'IP', port=포트번호, password='비밀번호') =('user', 'localhost', port=1234, password='pw')p2 = p.run('/bin/sh') 2. 패킹 p32(패킹할 것) : 32bit little-endian으로 패킹해주는 함수big-endian 옵션 : p32(0..
ELF 파일 구조 ELF란?실행 가능한 바이너리 또는 오브젝트 파일 등의 형식을 규정한 것이다. ELF파일 = ELF헤더 + 프로그램 헤더 테이블 + 섹션 헤더 테이블 오프젝트 파일은 세가지 종류가 있다. - 재배치 가능한 파일(relocatable file) : 코드와 데이터를 다른 오브젝트 파일과 링킹될 수 있도록 함- 실행 파일(executable file) : 코드와 데이터를 타겟 운영체제에서 실행시킬 수 있도록 함- 공유 오브젝트 파일(shared object file) : 재할당 가능한 데이터를 정적 혹은 동적으로 다른 공유 오브젝트들과 공유할 수 있도록 함 Linking View Execution View * readelf로 elf 파일 형식 확인 간단히 설명하자면,1. ELF 헤더 : 파일의 구성을 나타내는..
간단한 정리 RTL return to library 의 약자이고 linux에서는 return to libc라고 불린다.(linux에서 library가 libc)DEP/NX를 우회하기 위한 기법 이 기법을 이용하면 프로그램에 system()가 없어도 라이브러리의 system()를 호출하여 사용이 가능하다. 이 기법을 익히기 전에 먼저 알고가야할 것들이 있다. 바로 plt와 got.plt = procedure linkage table, got = global offset table plt란?사용자가 만든 함수는 plt를 참조할 필요가 없지만 외부 라이브러리에서 가져다 쓸 경우 plt를 참조하게 된다. 예를 들어 우리가 바이너리에서 만든 함수들 (main(), func() 등)은 plt를 참조할 필요가 없다. got란?실..
Format String Bug Format String Bug 포맷 스트링을 이용한 공격 기법으로 printf()함수의 취약점을 이용 ex)fgets(buf, sizeof(buf), stdin);printf(buf); 문자열일 때는 정상적으로 문자열로 인식하지만 서식문자를 넣었을 경우 문자열로 인식하지 않고 서식문자로 인식한다.서식문자를 만나면 메모리의 다음 4byte 위치를 참조해 그 서식문자의 기능대로 출력한다.ex. %d를 입력 -> 메모리 다음 위치에 있는 값을 10진수로 출력 format string 예를 들면, 여기서 "AAAA %p %p %p %p %x %x %x" 를 입력했을 때 printf 호출하기 직전 스택의 상태 중요한 것만 정리해보면 즉, 출력할 때 각 포맷 스트링이 참조하는 것은 출력은 당연히 아래처럼 된다. ..
ARM Assembly 간단 정리 1. Thumb 모드, ARM 모드 - Thumb 모드 레지스터 : R0 ~ R7 (8개) 기계어코드 길이 : 16bit(2byte) - ARM 모드 레지스터 : R0 ~ R15 (16개) 기계어코드 길이 : 32bit(4byte) Thumb ARM 전환 : BLX/BX 등 X로 끝나는 분기문 명령 2. 레지스터 R0 ~ R12 : 범용 레지스터, 인자값 및 임시 계산 저장소 등 R13(SP) : Stack Pointer, x86의 ESP와 비슷한 역할 R14(LR) : Link Register, 함수 호출 전 LR에 리턴 주소 저장하고 점프 (함수 호출시 리턴주소 스택 활용X) R15(PC) : 다음 실행할 코드의 주소 저장, x86의 EIP 레지스터와 동일한 역할 3. 함수 호출 규약 x86에서는 c..