pwnable
-
note Write-upSystem/Pwnable.xyz 2020. 1. 19. 04:17
이번 문제는 note류 문제다. 보통 ~~note와 같은 네이밍을 가진 문제들은 menu를 제공하고 각 메뉴 기능을 통해 Exploit을 진행한다. Binary 보호기법에서 특이사항은 No RELRO라는 점이다. RELRO는 Relocation Read-Only의 약자로 Symbol정보나 .got의 적용되는 보호기법을 말한다. No RELRO의 경우 ELF Header, Code영역을 제외한 영역에 쓰기권한이 부여된 상태이다. Problem 바이너리를 실행하면 'Edit note', 'Edit desc' 두 개의 메뉴를 제공한다. 먼저 Edit_note( )에서는 원하는 크기만큼 동적할당 후 값을 입력받는다. 입력받은 값은 전역변수 s에 저장하고, free( )로 할당한 공간을 해제해준다. Edit_de..
-
misalignment Write-upSystem/Pwnable.xyz 2020. 1. 19. 03:40
이전 문제에 sub,add 두 문제의 연장선같은 문제다. sub,add,misalignment 세 문제 모두 단순 Arbitrary Write문제다. Binary 64bit ELF 바이너리이며, Shared Object로 PIE가 걸려있음을 알 수 있다. Full Mitigation이 적용되어 있지만 쫄지말자 출제자가 의도된 풀이로 인도하기 위한 장치라고 생각하면 된다. win( )로 원샷 함수가 있기 때문에 간단한 익스가 가능하다. Problem 먼저 빨간박스에서 Arbitrary Write가 가능하다. v6,v7,v8 모두 scanf( )를 통해서 입력받고 있으며, v8값으로 저장주소의 인덱스 참조를 조정할 수 있다. 그리고 win( ) 실행 조건은 *(v5+7)위치에 0xB0000000B5가 저장되..
-
xor Write-UpSystem/Pwnable.xyz 2019. 12. 22. 02:32
pwnable.xyz의 xor 문제를 풀어봤다. 배점이 50점이라 난이도가 높지는 않고, 단순 Overflow Exploit이 아니라서 괜찮은 문제같다. Binary 먼저 64Bit 바이너리이고, Shared Object로 PIE가 걸려있음을 알 수있다. 보호기법은 Stack Canary를 제외하고 모두 적용되어 있다. Full RELRO이기 때문에 GOT Overwrite가 불가능하고, NX Bit가 적용되어 있기 때문에 실행권한이 없는 상태이다. 그리고 win( )로 Flag를 출력해주는 Oneshot함수가 존재한다. 또한, 바이너리 코드영역에 rwx권한이 부여되어 있다. 바이너리 특이사항은 이정도로 잡으면 될 것 같고, Exploit Point는 win( )와 코드영역 rwx권한으로 잡으면 된다. ..
-
Welcome Write-UpSystem/Pwnable.xyz 2019. 12. 8. 04:50
Pwnable.xyz의 첫 번째 문제 Welcome이다. 50점의 점수를 가지고 있기 때문에, 점수 상 그렇게 어려운 문제는 아니다. Binary 바이너리는 64bit 실행파일이며, Shared Object로 PIE가 적용되어 있다. 또한, Stripped상태로 Symbol정보가 모두 지워진 상태다. 또한, 모든 보호기법이 적용된 상태이다. 여기서 살짝 유추해볼 수 있는 것이 '일단 Memory Exploit은 아니겠구나' 이다. 따라서, 일반적인 Exploit방법보다는 Tricky한 방법으로 시선을 맞추는 놓는 것도 좋은 접근법이다. 바이너리도 크게 복잡하지 않다. malloc(0x40000)을 한 뒤, 할당된 주소를 출력해주고 있다. 그 뒤, scanf( )로 malloc( )할 Size를 사용자 입..
-
Return-to-Csu 기법 정리공부정리 2019. 3. 5. 23:47
포너블 문제를 풀 때, 64Bit 바이너리가 까다로운 이유가 바로 'Gadget' 때문이다. 64Bit의 Calling Convention은 Fastcall로 호출된 함수에 인자를 레지스터로 전달한다.이 때문에 Exploit을 구성할 때도 [POP RDI]와 같은 가젯이 반드시 필요하다. 이러한 특이점 때문에 문제에서 가장 흔하게 볼 수있는게 '가젯 제한'이다.이 상황에서 EDI,RSI,RDX 를 구성할 수 있는 방법이 있는데, 바로 Return_to_csu기법이다.[ Return to csu란? ]ELF바이너리를 IDA와 같은 디버깅도구로 열어보면, __libc_csu_init( )를 볼 수 있다.이 함수가 하는일은 바이너리의 _start( )를 호출하는 함수인 gmon_start( )를 호출하는 역할..
-
TUCTF2018 lisa WriteupSystem/CTF 2019. 1. 14. 02:37
[ Binary Info ]32Bit 바이너리이며, shared object으로 PIE가 적용되어 있다.PIE와 NX를 제외한 제약사항이 없기 때문에개인적으로 PIE를 처음 접한다면 입문용 문제로 괜찮다고 생각한다. ( 로컬서버에서는 같은 디렉터리에 password와 flag파일을 만들어줘야 합니다. ) 문제의 난이도는 PIE를 제대로 이해한 사람에게는 쉬웠을 것이고나처럼 PIE가 익숙치 않은 사람에게는 어렵게 느껴졌을 것이다.따라서, 무작정 풀다가 어려움을 느끼고 라이트업을 보러오신 분들은 [PIE 보호기법 정리] 를 먼저 보시고다시 한번 풀어보는 것을 추천드리고 싶다! [ Binary 실행 ]바이너리를 실행하면 주소 하나를 릭해준다.그리고 두 번의 입력을 받고 프로그램이 종료된다.대충 이렇게 흐름을 ..