InfoSec

InfoSec/Pawnable

[Pawnable] Shellcode

셸코드를 사용하는 이유 rip를 자신이 작성한 셸코드로 옮겨서 원하는 어셈블리 코드가 실행되게 할 수 있음셸코드 공유 사이트도 있지만, 스스로 작성할 수 있는 것이 제일 나음 orw 셸코드파일을 열고 읽은 뒤에 화면에 출력해주는 셸코드 syscallraxarg0 (rdi)arg1 (rsi)arg2 (rdx)read0x00unsigned int fdchar *bufsize_t countwrite0x01unsigned int fdconst char *bufsize_t countopen0x02const char *filenameint flagsumode_t mode open 구현push 0x67mov rax, 0x616c662f706d742f push raxmov rdi, rsp ; rdi = "/tmp..

InfoSec/Pawnable

[Pawnable] Pwntools 사용 방법

등장 배경pwndbg에서 만약 인자로 전달할 값이 많거나 파이썬의 코드가 길어지게 되면 불편하고 가독성이 떨어진다.그래서 해커들은 파이썬으로 익스플로잇 스크립트를 작성하여 바이너리를 실행한다.설치 방법sudo apt-get updatesudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essentialsudo python3 -m pip install --upgrade pipsudo python3 -m pip install --upgrade pwntools설치 후에 사진과 같이 명령어를 입력했을 때 이런 화면이 뜨면 잘 설치된 것이다.사용 방법1. process: 익스플로잇을 로컬 바이너리를 대상으로 할 때..

InfoSec/Pawnable

[Pawnable] Pwndbg 설치와 사용 방법

1. 설치 방법https://github.com/pwndbg/pwndbg GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made EasyExploit Development and Reverse Engineering with GDB Made Easy - pwndbg/pwndbggithub.com여기에 들어가서 git clone https://github.com/pwndbg/pwndbgcd pwndbg./setup.shgdb위 명령어를 그대로 치면 아래와 같은 화면이 나와야 한다. quit을 입력하면 pwndbg를 나갈 수 있다. 2. pwndbg 개요 리눅스는 실행 파일 형식으로 ELF (Executable and ..

InfoSec/Wargame

[워게임] Check Return Value 풀이

1. 문제 요약바이너리가 레지스터에 반환하는 값을 디버깅으로 찾는 문제이다.출력문이라면 디버깅을 하지 않고도 문자열만을 검색하여찾을 수 있지만,바이너리가 해당 문자열을 레지스터에다가 반환하기 때문에 디버깅 사용은 필수이다.2. 문제 풀이GDB 디버거 연결우선 기본적으로 바이너리를 디버거로 열어준다.이렇게 열어줘야 정상적으로 열린다. (나는 처음에 모르고 위에 Tool Chest에 있는 Debugger를 눌렀더니 계속 빈 프로젝트 파일만 오픈이 되었다.)그 후에 디버거 메뉴에서 GDB LOCALLY IN-VM을 열어 디버거를 우분투의 GDB와 연결시켜준다.그러고 일단 starti 메뉴를 체크하고 실행을 시켜준다. 여기까지가 항상 기본 작업이다.브레이크 걸기가장 먼저 해주어야 할 것은, 동기화이다.Ghidr..

InfoSec/Wargame

[워게임] Check Function Argument 풀이

1. 문제 이해 해당 프로그램을 실행시켰을 때 플래그가 출력되지 않고 숨겨져 있음을 알 수 있다. 그래서 디버거를 사용하여 출력 함수 다음으로 실행되는 함수가 어떤 데이터를 갖고 있는지 알아내야 한다. 2. 문자열 검색 Below function takes the flag as an argument :) 는 그냥 봐도 20바이트는 넘기 때문에 문자열 검색의 minimum 값을 20으로 설정하고 찾아본다. 3. 문자열 참조 그러면 우리가 찾고자 했던 문자열의 위치로 이동할 수 있고, 문자열이 쓰여 있는 곳이 곧 메인 함수이기 때문에 우리는 문자열 참조를 하여 메인 함수의 위치로 이동할 수 있다. 4. 디버깅 디컴파일된 메인함수를 보면 출력 함수 밑 부분에 FUN_004015e2 라는 함수가 어떤 데이터를 ..

InfoSec/Wargame

[워게임] Simple Patch Me 풀이

1. 문제 이해 우선 simple_patch_me 파일을 실행시켜서 동적분석을 하게되면 1년이 지난 후 플래그를 알려주는 프로그램이라는 것을 알 수 있다. 그러면 우리는 I will show you the flag after 1 year :p 라는 문자열을 찾기만 하면 main 함수로 이동할 수 있을 것이다. 2. 문자열 검색 Search - Search for Strings 를 클릭해서 문자열의 길이가 15 바이트가 넘으니 최소 길이를 15로 설정하고 검색해주면 우리가 찾고자하는 문자열을 찾을 수 있다. 마찬가지로 한 번 클릭해주고 창을 닫아준다. 3. 문자열 참조 그러면 어셈블리 코드에서 해당 문자열이 사용된 위치로 이동해있는데, 그 상태에서 우클릭을하여 그 문자열을 참조하고 있는 함수를 찾아 해당 ..

InfoSec/Wargame

[워게임] Simple Crack Me 2 풀이

1. 프로그램 분석 우선 프로그램이 어떻게 작동하는지 알기 위해, 실행시켜보자 $ ./simple_crack_me_2 12341234123412342134123412341234123412342134 your input length is wrong x( $ ./simple_crack_me_2 12342134asdfasdfadsf your input length is wrong x( $ ./simple_crack_me_2 asdfasfasd123 your input length is wrong x( $ ./simple_crack_me_2 123123asdasd your input length is wrong x( $ 우선, 입력 값을 입력했을 때, 입력 값의 길이가 틀리다는 문자열이 출력된다. 입력 값의 일..

InfoSec/Wargame

[워게임] Simple Crack Me 풀이

Simple Crack Me | 워게임 | Dreamhack Simple Crack Me Description Exercise: Simple Crack Me에서 실습하는 문제입니다. 이 문제는 사용자에게 숫자를 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너 dreamhack.io 1. 시작 단계 프로젝트를 생성해준다. 생성하지 않으면 Tool Chest에 용 그림이 뜨지 않는다. 들어오면 처음에는 프로젝트 폴더가 비어있을 텐데, File에서 Import File을 해서 simple_crack_me를 해준다. 처음엔 여기서 불러오기가 안되길래 Ghidra를 처음부터 다시 깔았는데 꼭 User 폴더에 생성해야한다. 그 이유는 나도 모르겠다..

agor
'InfoSec' 카테고리의 글 목록