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의 공유 ..
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다. 때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !! 리버싱 – 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..
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다. 때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !! Ø shell code 작성 ü execve() 함수 #incldue(unistd.h) int execve( const char *filename, char *const argv[], char *const envp[]); 파일이름, 파일 인자의 포인터, 환경 변수의 포인터 execve()는 filename이 가리키는 파일을 실행합니다. filename은 바이너리 실행 파일이거나 #! interpreter [arg]와 같은 라인으로 시작하는 스크립트 파일이..
Ø 어셈블리어 ü 개요프로그래밍 언어의 하나로 기계어에서 한 단계 위의 언어이며 기계어와 함께 단 둘 뿐인 low level언어에 속합니다. 기계어 1라인당 어셈블리 명령어가 대부분 1라인씩 대응되어 있고 이를 비교적 간단하게 짤 수 있는 어셈블러를 통해 기계어로 변환되도록 합니다. 때문에 고급 언어와 기계어 사이의 ‘중간 언어’라고 불리기도 합니다.( 어셈블러는 어셈블리어를 기계어로 바꿔주는 프로그램입니다 ) 이 어셈블리어는 통일된 규격이 없으므로, 모든 플랫폼에서 공통된 사항이 아닙니다. x86 CPU에서는 크게 인텔 방식과 AT&T 방식으로 나뉘어 집니다. 인텔 방식은 가독성이 뛰어나고, AT&T 방식은 가독성은 떨어지나, 인텔 방식보다 좀 더 많은 정보를 포함하고 있습니다. ü 레지스터컴퓨터의 프..
- 스프링 테스트
- Thymeleaf
- Computer_Networking_A_Top-Down_Approach
- 프로그래머스
- 스프링
- 버퍼오버플로우
- Spring
- 운영체제 반효경
- jsp
- 파이썬 for Beginner 연습문제
- 김영환
- 지옥에서 온 git
- 쉘 코드
- BOF
- shell code
- Spring Boot
- Spring Data JPA
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- JPA
- spring mvc
- JUnit
- 쉽게 배우는 운영체제
- 생활코딩 javascript
- 방명록 프로젝트
- Gradle
- 파이썬 for Beginner 솔루션
- 패킷 스위칭
- 선형 회귀
- Python Cookbook
- 리버싱
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday