FTZ(19)
-
Layer7 15과제 -F.T.Z level 14 풀이-
tmp로 attckme 파일을 복사하여 gdb로 확인해봅시다. 빨간 상자는 Crap, Check, buf를 할당 받는 부분입니다. 16진수 38은 10진수 56입니다. 메모리 구조 : buf[20]+dummy+check(4)+dummy+crap(4)+dummy=56 cmp에서 조건을 검사할 때 ebp-16(buf)이므로 56-16을 한 40을 버퍼오버플로우 시켜주면 될거 같다.' 이렇게 한 후 my-pass를 입력해주니 풀립니다. guess what
2019.07.10 -
Layer7 14과제 -F.T.Z level 12 풀이-
먼저, 저번 시간에도 말했지만 segment란 하나의 프로세스 즉, 하나의 프로그램이 실행되기 위한 메모리 구조이다. 운영체제는 하나의 프로세스를 실행시키면 이 프로세스를 segment라는 단위로 묶어서 쓰지 않는 메모리 영역에 저장시킨다. 저번 내용을 보지 못 했다면 ↓↓↓ https://adkim.tistory.com/25 컴퓨터 메모리 구조 시스템이 초기화 되기 시작하면 시스템은 커널을 메모리에 적재시키고 가용 메모리 영역을 확인하게 된다. 시스템은 운영에 필요한 기본적인 명령어 집합을 커널에서 찾는다. 커널이란? 컴퓨터의 운영체제의 핵심.. adkim.tistory.com SFP(stack Frame pointer) - RET 위에서 프로그램 메모리의 기준점 RET(retern) - 프로그램이 종..
2019.07.09 -
Layer7 13과제 -F.T.Z level 13 풀이-
쉘(shell): - 리눅스는 GUI 환경도 있지만 GUI 환경이 제공되기 이전 터미널 환경을 이용하여 명령어를 직접 타이핑하여 컴퓨터 를 운영하였다. 현재 많은 리눅스 GUI 버전이 생겼지만 아직도 터미널 환경을 사용하는 것이 GUI처럼 직관적이지는 않지만 강력한 기능을 제공하기 때문에 여전히 많이 사용되고 있으며 이 때 터미널에 입력한 명령을 해석하고 관리하는 프로그램을 쉘(shell)이라고 한다. 쉘은 사용자와 커널 사이를 연결시켜주는 역할을 하여 사용자가 입력한 명령을 해석하여 운영체제가 해당 명령어를 알아들을 수 있게 해준다. 쉘코드(shell code): - 시스템의 특정 명령을 실행하는 작은 사이즈의 프로그램을 뜻하여, 일반적으로 기계어 코드로 작성되어 있다. 쉘코드란 단어는 공격 대상 시스..
2019.06.19 -
Layer7 11과제 -F.T.Z level 11 풀이-
먼저 저번에 f.t.z level 10에서 얻은 비밀번호를 이용하여 로그인을 해줍니다. 파일 리스트를 보니 특이한 파일 2개. hint와 attackme라는 파일이 있네요. 다음은 권한을 상승시키고 실행시 매개변수를 str에 복사하고 출력해주는 프로그램 입니다. setreuid() 함수는 사용할 수 있는 유저를 바꿔주는 함수라고 생각하시면 됩니다. strcpy는 overflow 결함이 있는 함수인데 여기서 썼다는 것은 아마 overflow 취약점을 사용해야 할거 같아요. 또한, printf(str); 이라는 부분에서 문자열 포맷 코드가 없습니다. format string attack(포맷 문자열 공격) 이렇게 두 가지의 취약점이 있다는 걸 알 수 있습니다. 이제 아까 수상 했던 attackme 파일을 실..
2019.05.31 -
Layer7 09과제 -10 -F.T.Z level 10 풀이-
Putty를 켜서 level10으로 로그인을 한다. 기존에는 보지 못했던 program이라는 파일이 생겼다... cat 명령어를 사용하여 hint구문을 읽었다. 아까 만든 수상한 program이라는 파일을 읽어보려고 했지만 권한 부족으로 열지 못하였다. 도청을 하기 위해서는 공유 메모리값을 읽는 프로그램을 만들어야 한다. 우리에겐 공유 메모리의 key_t값이 있다. 먼저, 공유 메모리란 무엇일까? -다중처리 시스템에서, 여러 개의 프로세서가 공동으로 사용하는 주기억 장치를 말한다. 문제 내용을 보면 key_t 값을 제공하는데 key_t 값은 공유 메모리를 구별하는 식별 번호이다. 공유 메모리의 위치라고 생각하면 이해하기 쉽다. 즉 key_t 7530 위치에 접근하는 소스코드를 작성하면 된다. /tmp로 ..
2019.05.23 -
Layer7 09과제 -9 -F.T.Z level 9 풀이-
level 8에서 얻은 비밀번호를 이용하여 로그인를 한 후 어떤 파일이 있는지 확인하기 위해 ls 명령어를 사용한다. cat hint의 내용이다. 뭔가 좀 이상하지 않은가? 값을 받는 변수는 buf[10] 변수인데 값을 검사하는 부분이 buf2 변수를 검사한다. 또한, 메모리의 값이 작아 조금만 값을 넘어가면 오버플로우가 날 수 있다. 맞다. 이 문제는 이 오버플로우를 이용하여 문제를 푼다. 먼저 buf2[10]이 buf[10]보다 먼저 할당 되었으므로 buf에 buf가 저장할 수 있는 사이즈[10] 보다 큰 값을 받으면 buf2로 넘어가서 덮어씌워지게 된다. 우리의 목표는 buf2가 "go"가 되는 것이다. 새로 hello.c라는 파일을 만들어주고, bof 파일을 복사해줍니다. 만든 파일을 컴파일 해줍..
2019.05.23