0x04 pwnable(130)
-
Rootme ch12 (Race condition)
ch12 : Race condition 문제 바이너리는 /tmp/tmp_file.txt를 생성하는데 (v4) 이미 존재하면 exit(0) 바이너리는 /challenge/app-systeme/ch12/.passwd를 연다. (v5)해당 경로에 이 파일이 존재하지 않으면 exit(0) while ( read(v5, &buf, 1u) == 1 ) write(v4, &buf, 1u); 플래그를 1바이트씩 읽은 후 v4에 차곡차곡 저장한다. unlink("/tmp/tmp_file.txt"); 시간 조금 지나고 /tmp/tmp_file.txt를 지워버려서 플래그를 획득할 수 없다. 그렇다면, 어떻게 익스플로잇을 할 것인가? 눈여겨 보아야 하는 단어는 "지워버리는 unlink" 이다. /tmp/tmp_file.txt..
2018.05.02 -
Rootme Race condition (ch12)
Race condition이란? 한정된 자원을 "동시에" 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌인다. 레이스컨디션을 이용하면 root 권한을 얻을 수 있게 된다. Race condition은 어떻게 발생하게 될까? 심볼릭 링크에 대해 조금 알고 있어야 한다. 심볼릭 링크란 바로가기라고 볼 수 있는데, 심볼릭 링크가 수정되어도 본래의 파일은 수정이 되게 된다. rootme문제를 통해 Race condition을 이해해보자. 접속ssh -p 2222 app-systeme-ch12@challenge02.root-me.org id = app-systeme-ch12pw = app-systeme-ch12 Race condition의 조건 1. 다른 계정의 권한에 접근해야 하기 때문에 SUID가 걸..
2018.05.02 -
pwnable.kr Rookis note 풀기 전 개념 공부
보호되어 있는 글입니다.
2018.04.29 -
고수준 파일 입출력 공부
참고. http://12bme.tistory.com/214?category=753165 이전 글에서 언급했듯이 고수준 파일 입출력은 Standard Input/Output Library라고도 한다. 고수준 파일 입출력은 바이트 단위가 아닌, "버퍼"로 입출력을 진행한다. 고수준 파일 입출력은 FILE*를 사용하는데, 이는 디스크에서 메모리로 읽어온 파일의 위치에 관한 정보를 담고 있는포인터이다. 파일 포인터 구조체안에는 파일 기술자(file discriptor), 버퍼 주소, 버퍼 내 문자등이 존재한다. 고수준 파일 입출력 역시 바이트 단위로 입출력은 할 수 있는데, 이때 문자 기반 입출력 함수를 이용하게 된다. ==============문자 기반 입력함수 ============== 1. fgetc() ..
2018.04.29 -
저수준 파일 입출력 공부
저수준 파일 입출력이라는 개념에 대해 알아보았다. 참고 URl : http://12bme.tistory.com/211정리가 정말 잘되어있다. 우선, 리눅스에서 파일은 일반파일과 특수파일로 구분된다. 1. 일반파일 : 텍스트 바이너리 형태의 데이터를 저장하는 파일2. 특수파일 : 데이터전송, 장치 접근에 사용하는 파일 일반파일부터 하나하나 공부해보았다. 파일을 읽고 쓰는 방법에는 크게 2가지로 나뉘어 진다. =================1. 저수준 파일 입출력 2. 고수준 파일 입출력================= 저수준 파일 입출력 : "커널의 시스템"을 호출하여 파일 입출력을 수행한다.즉, 어셈블리어가 저급언어이듯 그런 뉘앙스로 '저수준'이라는 명칭이 붙었다고 생각하면 이해하기 쉽다. 저수준 파일 입..
2018.04.29 -
Rookis echo2 source Analysis
보호되어 있는 글입니다.
2018.04.29