본문 바로가기

분류 전체보기

(113)
[GPN CTF-Pwning]Never gonna give you UB 보호되어 있는 글입니다.
[picoCTF-Web Exploitation]Bookmarklet 뭔가를 출력하여 flag를 확인할 수 있는 것 같다. Instance를 생성하고 문제에 있는 Browse here를 클릭하여 Instance를 실행한다.열린 페이지에서 이런 문구가 보인다.bookmarklet이 주어지는데 자바스크립트 코드로 보인다.  javascript:(function() { var encryptedFlag = "àÒÆަȬë٣֖ÓÚåÛÑ¢ÕӜÒËɧœ©™í"; var key = "picoctf"; var decryptedFlag = ""; for (var i = 0; i 전체 코드는 위와 같다.flag가 암호화된 문자열 encryptedFlag 형태로 선언되어 있고,picoctf를 키로..
[드림핵]카나리 동적 분석 간단한 C코드를 작성한 뒤 카나리 기법이 적용된 방식으로 컴파일했다.컴파일된 실행파일을 동적 분석하면서 카나리가 어떤 방식으로 Stack Buffer Overflow 공격을 탐지하는지 확인했다. 활용한 C코드(canary.c)는 아래와 같다.#include int main() { char buf[8]; read(0, buf, 32); return 0;}크기가 8 바이트인 buf 변수에 32바이트를 읽어오므로 Stack Buffer Overflow 취약점이 있는 코드이다. 이 코드를 아래와 같이 컴파일하면 카나리가 적용된 실행파일로 컴파일된다.$ gcc -o canary canary.c -fstack-protectorUbuntu 22.04에서는 -fstack-protector 옵션이 없어도 기본..
[드림핵 워게임]shell_basic 먼저 다운로드한 파일 중에서 C코드를 열어보았다.뭐하는 함수인지 이해하기 어려운 함수들이 있었는데 문제를 읽어보면 풀이와 관련이 없는 함수인 것을 알 수 있다.main함수는 아래와 같이 매우 간결하게 생겼다.46행에서 "shellcode: "를 출력하고 바로 read() 함수로 데이터를 읽어온다. 프로그램이 어떤 모습으로 돌아가는지 직접 확인하고 싶어서shell_basic 실행파일을 실행해보았다.실행하니 "shellcode: "가 출력되고 임의로 iguana를 입력하고 나니segmentation fault가 뜨면서 프로그램이 종료되었다. 공격코드를 쉘코드로 제작해서 입력하면 해당 코드가 main 함수의 50행에서 실행되는 것으로 파악하였다.드림핵 시스템해킹 로드맵의 Shellcode 스테이지에서 orx셸..
[Bomb Lab] phase4 https://studyforall.tistory.com/98 [Bomb Lab]Bomb Lab이란?Bomb Lab은 컴퓨터 사이언스로 유명한 카네기 멜론 대학교에서 만든 실습 프로그램이다. 이 프로그램을 통해 디버거 사용법을 익히고 바이너리 분석을 연습해볼 수 있다. 폭탄을 터뜨리지 않고 안studyforall.tistory.com 가상머신: virtualboxGuestOS: Ubuntu 22.04 -> Kali Linux 2024.1디버거: pwndbg 플러그인 설치한 gdb 먼저 disassemble phase_4 명령어를 입력하여 phase_4 함수를 어셈블리 코드로 출력해보았다. 에서 sscanf 함수를 호출하고에서 eax에 들어있는 함수의 반환값을 0x2와 비교한다.같지 않으면 로 jump하여..
[Android Studio] '._drawable' is not a directory 오류 해결 🔆 개발환경- Android Studio 버전: Android Studio Jellyfish | 2023.3.1- OS: macOS Sonoma 14.4.1(Intel) 따로 설정에 손 댄 거 없이 일반적인 방식으로 새 프로젝트를 생성해서 빌드하는데 자꾸 오류가 났다.오류 내용은 '프로젝트폴더/app/build/intermediates/packaged_res/debug/packageDebugResources/._drawable' is not a directory' is not a directory 였다. 찾아보니까 ._drawable을 삭제하라는데 Finder에서는 안보여서 터미널로 지웠다.그리고나서 빌드했더니 이번에는 또 다는 ._로 시작하는 파일 is not a directory 오류가 뜨면서 빌드..
[드림핵 System Hacking Fundamental] Stage 5 이전 포스팅에 이어 계속 공부한 내용을 정리해본다. Stage5. Stack Buffer Overflow 이전까지는 기초지식과 툴 사용법을 익혔다. 이제 처음으로 공격기법을 공부하기 시작했다. 공부하면서 기초지식과 툴 사용법을 익히는 과정이 매우 중요했다는 것을 느낄 수 있었다. Stage5-1. Calling Convention 함수 호출 규약(Calling Convention) 함수의 호출 및 반환에 대한 약속 Caller(호출자), Callee(피호출자)가 있음 함수 호출 규약의 종류: SYSV(x86-64아키텍처), cdecl(x86아키텍처) 등 SYSV의 특징 6개의 인자를 rdi, rsi, rdx, rcx, r8, r9에 순서대로 저장하여 전달하며, 더 많은 인자를 사용할 때는 스택을 추가로 ..
[드림핵 System Hacking Fundamental] Stage3 이전 포스팅에 이어 계속 공부한 내용을 정리해본다. Stage3. Tool Installation 시스템 해킹을 할 때 자주 쓰는 툴로 디버거인 gdb와 익스플로잇 코드를 짤 때 활용하기 좋은 pwntools가 있다. 각각에 대해 설치방법부터 사용법까지 다루는 매우 유익한 강좌였다. 이 강좌에서도 설명이 아주 친절하게 되어있지만 gdb의 기능을 익히기에는 조금 부족한 느낌이 있어서 BombLab을 풀면서 툴 사용법을 익히는 과정을 거쳤다. pwntools는 아직 제대로 써본 적이 없어서 익숙해지지 않은 상태인데, 다음 Stage를 풀면서 차차 익숙해져가길 기대하고 있다. Stage3-1. Tool:gdb gdb: 리눅스의 대표적인 디버거로, 실행 프로그램을 어셈블리 명령어 단위로 실행해주는 프로그램. p..