목록분류 전체보기 (285)
tmxklab
1. 문제 nc svc.pwnable.xyz 30019 1) mitigation 확인 2) 문제 확인 Read와 Write 2개의 메뉴가 보이며 Read에서는 어떤 주소에 있는 값을 읽는 것 같고 Write는 어떤 주소에 값을 쓰는 것 같다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax const char *v5; // rdi char *s; // [rsp+10h] [rbp-10h] setup(argc, argv, envp); puts("Read Write Sleep Repeat."); do { while ( 1 ) { while ( 1 ) { print_menu..
1. 문제 nc svc.pwnable.xyz 30018 1) mitigation 확인 2) 문제 확인 인사했는데 안받아줬다 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { setup(argc, argv, envp); printf("> "); read(0, &input, 0x404uLL); fclose(&input); return 0; } read를 통해 input에 0x404byte만큼 입력 값을 받음 fclose(input) 전역변수) input : 0x601260 2. 접근방법 fsop(file stream oriented programming)를 통해 익스 FSOP를 위한 fclose()..
1. 문제 nc svc.pwnable.xyz 30017 1) mitigation 확인 2) 문제 확인 message에 값을 저장하고 2번 메뉴를 통해 출력할 수 있으며 1번 메뉴를 통해 수정할 수 있다. 하지만 3번메뉴를 선택하면 아무런 출력이 없다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax char v5; // [rsp+10h] [rbp-30h] unsigned __int64 v6; // [rsp+38h] [rbp-8h] v6 = __readfsqword(0x28u); setup(argc, argv, envp); puts("Message taker."); p..
1. 문제 nc svc.pwnable.xyz 30015 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { setup(argc, argv, envp); initialize_game(); printf("Name: "); read(0, cur, 0x7FuLL); while ( 1 ) { print_menu(); switch ( (unsigned __int64)(unsigned int)read_int32() ) { case 0uLL: return 0; case 1uLL: (*((void (**)(void))cur + 17))(); break; case 2u..
tcache개념을 공부하고 처음 tcache관련 문제를 풀어보았다. tcache에서 DFB를 포함한 여러 오류 검증 코드가 빠져있어 exploit이 쉬운 것 같다. 해당 문제는 tcache poisoning공격 기법을 사용하여 풀었다. 1. 문제 nc ctf.j0n9hyun.xyz 3041 1) mitigation 확인 이번엔 mitigation이 모두 걸려있다. 2) 문제 확인 메뉴가 총 5개가 보인다. (추가, 수정, 삭제, 확인, 종료) 3) 코드 흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { alarm(0x3Cu); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin..
stdout flag값을 변경하여 libc주소를 leak하는 방법을 정리하였다 따로 libc주소를 leak할 방법이 없을 때 유용하게 쓰일 것 같당ㅎㅎ 관련 문제 : [HackCTF/Pwnable] ChildHeap stdout을 이용한 libc주소 leak & fastbin dup 1. 문제 nc ctf.j0n9hyun.xyz 3033 1) mitigation 확인 2) 문제 확인 3) 코드 흐름 확인 3-1) main() int __cdecl __noreturn main(int argc, const char **argv.. rninche01.tistory.com 1. 프로세스 _IO_FILE struct의 멤버 변수 _flags를 특정한 값(하위 2byte를 0x1800)으로 변경하고 _flags부터..
1. tcache란? tcache(Thread local Caching)란 멀티 스레드 환경에서 메모리 할당속도를 높이기 위해 glibc 2.26버젼 이상부터 생겨난 기술이다. 이전에 멀티 스레드 환경에서 Arena라는 개념을 도입하여 각 스레드당 힙 메모리를 제공하여 서로 간섭없이 힙 작업을 빠르게 수행할 수 있도록 도와준다고 하였다. tcache라는 개념 또한 멀티 스레드 환경에서 힙 작업을 빠르게 수행할 수 있도록 도와주는 기술이다. tcache는 작은 단위의 메모리 할당이 필요할 경우 arena를 참조하지 않고 바로 메모리를 할당할 수 있도록 각 스레드 당 thread cache라는 영역을 제공함으로써 메모리 할당 속도를 높일 수 있는 기술이다. 이제부터 tcache에 대해 자세히 설명하도록 하겠..
어셈블리어로 쉘 코드를 작성할 때 종종 system call table을 찾아보는 일이 있어서 간략하게 정리하도록 하였다. system call 이란? 운영체제에서 커널 모드와 유저 모드로 나뉘게 되는데 유저 단에서 커널 영역의 기능을 사용하고자 할 때 system call을 통해 필요한 기능을 수행할 수 있게 도와준다. 커널은 운영체제의 핵심으로 프로세스, 하드웨어, 등등 컴퓨터 자원을 효율적으로 관리하는 역할을 가진다. 가끔 유저단에서 파일을 읽거나 쓰거나 또는 화면에 출력하거나 이러한 기능들은 커널에서 담당하므로 시스템 콜을 통해 유저 단에서 커널의 기능을 사용할 수 있도록 도와준다.(ex) read(), write(), open()) 참고 자료 : books.gigatux.nl/mirror/ker..
1) Hot key [IDA] 자주쓰는 IDA 단축키 d : 자료형 변환 --> d 를 누를때마다 byte -> word -> dword -> qword 순으로 자료형이변경된다. a : 문자열 변환 --> 데이터를 문자열 형식으로 변환한다. c : 코드 변환 --> 데이터를.. 1nzag.tistory.com 2) plugin onethawt/idaplugins-list A list of IDA Plugins. Contribute to onethawt/idaplugins-list development by creating an account on GitHub. github.com
exit()함수 내부에 존재하는 free함수를 이용한 exploit 1. 문제 nc ctf.j0n9hyun.xyz 3040 1) mitigation 확인 2) 문제 확인 두 번의 입력을 받고 출력해준뒤 프로그램이 종료된다. 3) 코드 흐름 확인 3-1) main() int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int i; // [rsp+Ch] [rbp-144h] char buf; // [rsp+10h] [rbp-140h] unsigned __int64 v5; // [rsp+148h] [rbp-8h] v5 = __readfsqword(0x28u); Init(argc, argv, envp); for ( i = 0;..