
본 포스팅은 간단한 디스어셈블을 위한 elf 파일 구조를 정리하기 위함입니다.ELF (Executable and Linkable Format)유닉스 계열 운영체제에서 사용되는 표준 바이너리 파일 포맷이다. ELF는 다양한 하드웨어 아키텍처 및 운영체제에서 사용되며, 리눅스의 기본 실행 파일 형식으로 널리 활용되고 있다.파일 유형으로는 다음과 같다.실행 파일 : 독립적으로 실행 가능한 바이너리 파일오브젝트 파일 : 다른 오브젝트 파일과 링크되어야 실행 가능공유 라이브러리 : 동적 라이브러리를 의미함코어 덤프 : 프로세스의 메모리 상태를 저장하는 파일보통 ELF 파일은 ELF Header + Program header table + Section header table로 구성된다.ELF header : EL..

OX : Windows 10 Program : Ollydbg110 Easy_CrackMe.exe 분석 파일 실행 Easy CrackMe라는 title로 창이 뜨고 입력 값을 받도록 돼있습니다. 아무 문자열이나 입력해 보면, Incorrect Password라는 메시지를 창과 함께 띄웁니다. 현재 다른 특별한 사항은 발견할 수 없기에 일단 원하는 입력 값을 리버싱 해 찾아 넣어주면 될 것 같습니다. OllyDbg – Easy_CrackMe.exe 실행 파일의 시작 지점인 Entry Point를 따로 찾지 않고 위의 화살표 모양을 눌러 주면 알아서 시작 부분을 나타내 줍니다. 많은 명령어들이 이어서 나오는데, 현재 목적은 입력한 문자열을 비교 연산해 주는 부분만 찾아 원하는 문자열 (password)를 알아..

가상 환경 : VMware Workstation 10 OX : Linux-Ubuntu 16.04.02-64bit Setting : sudo apt-get install vim sudo apt-get install nasm 입력 : 사용자로부터 N 입력 받기 ex)>N 출력 : 입력 받은 값의 N단 출력 multi2.asm 코드 전체 buffer : 입력 받은 값 저장할 변수 res : 곱 결과를 저장할 변수 increase : 입력 값에 곱할 증가 값을 저장할 변수 출력할 문자들을 초기화해서 저장 section .bss -> 초기화하지 않은 전역변수 선언 영역 section .data -> 초기화한 전역변수 선언 영역 데이터 지시어 section .text -> 실행할 코드가 저장되는 영역 extern ..
RTL (Return to Library) 이 기법은 라이브러리의 함수로 리턴해서 그 함수를 실행할 수 있습니다. 때문에 임의로 짠 바이너리에 시스템함수가 없어도 라이브러리의 시스템함수를 호출해서 그 바이너리에 쓸 수 있게 됩니다. 방금 알아 봤듯이 printf, puts, gets, 이런 함수들은 우리가 만든 사용자 함수가 아닌 외부 라이브러리에서 가져와 사용하는 함수들입니다. 가져오는 방법은 plt와 got를 공부하면서 알아봤습니다. 그 중 system 함수를 담고 있는 라이브러리를 찾아 ret 주소에 이 system 함수의 주소로 변조시켜 주는 겁니다. 그러면 ret가 변조된 함수가 리턴될 때 해당 라이브러리를 참조해 system 함수를 실행시킬 수 있게 됩니다. 즉 Dynamic link의 공유 ..
PLT & GOT PLT (Procedure Linkage Table) :외부 프로시저를 연결해주는 테이블. PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있습니다. GOT (Global Offset Table) :PLT가 참조하는 테이블.프로시저들의 주소가 들어있습니다. ※프로시저(procedure) : C언어에서 함수와 비슷한 개념으로, 차이점은 함수는 리턴 값을 남기지만 프로시저는 리턴 값을 남기지 않습니다. 쉽게 말해서 함수는 수학적으로도 생각해보면 input값에 의한 output(반환 값)이 반드시 있어야 정의됩니다. 프로시저는 그렇지 않아도 된다는 말이죠. 하지만 요즘은 함수에서 void라는 반환형을 사용하여 리턴 값을 남기지 않도록 사용하기 때문에 딱히 구별하지 않기도 한..
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다. 때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !! 리버싱 – Easy_ELF 실행파일 분석 가상 환경 : VMware Workstation 10 OX : Linux-Ubuntu 16.04.02-64bit Setting : echo 0 > /proc/sys/kernel/randomize_va_space (ASLR 해제) sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 li..
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다. 때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !! 가상 환경 : VMware Workstation 10OX : Linux-Ubuntu 16.04.02-64bitSetting : echo 0 > /proc/sys/kernel/randomize_va_space (ASLR 해제)sudo dpkg --add-architecture i386sudo apt-get updatesudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 (6..
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다. 때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !! 취약점의 기본 정의는 이렇습니다. 취약점은 공격자가 시스템의 정보 보증을 낮추는데 사용되는 약점이다.( 위키백과 )좀 더 구체적으로 설명하자면, 소프트웨어의 결함이나 체계, 설계상의 허점을 공격자가 악용할 수 있는 부분입니다. (출처 : [2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다)취약점을 잘 이해하기 위해서는 위의 포함관계를 알아야 합니다. 먼저 어떤 프로그램이 있습니다. 프로그램을 개발한 개발자는 자신이 원하는 프..
- Total
- Today
- Yesterday
- 패킷 스위칭
- 지옥에서 온 git
- git merge
- Gradle
- fetch join
- 스프링 컨테이너
- 생활코딩 javascript
- 방명록 프로젝트
- Spring Boot
- Spring Data JPA
- jsp
- Python Cookbook
- Computer_Networking_A_Top-Down_Approach
- 쉘 코드
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 쉽게 배우는 운영체제
- git
- Thymeleaf
- 선형 회귀
- 스프링 mvc
- 김영환
- 운영체제 반효경
- git branch
- JPA
- Spring
- 파이썬 for Beginner 연습문제
- 스프링 테스트
- 파이썬 for Beginner 솔루션
- 스프링
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |