전체 글 156

[FTZ] level13 ( write - up )

이것 또한 strcpy의 취약점으로 발생하는 버퍼오버플로우다.하지만 스택 가드가 존재한다. 변수 i의 값을 건들면 안된다.즉, 변수 i와 변수 buf의 거리를 계산해서, 변수 i에 리틀엔디안으로 0x1234567을 넣어주면 될듯 하다! 일단 함수 프롤로그 후 변수를 0x418 (1048) 만큼 할당한다.그리고 buf의 크기는 1024이다. 그리고 main+69 부분에서 ebp-12의 값과 0x1234567을 비교하므로 ebp-12가 변수 i임을 알 수 있다.그리고 직접 브레이크 포인트를 걸고 동적 디버깅을 해서 변수의 거리를 알아낸다.-> dummy data를 구하기 위해서! ret은 1048 + 4라는 것을 생각해보았을때, buf 1024 + dummy 12 + i 4 + dummy 12 + EGGSH..

[FTZ] level12 ( write - up )

printf 부분에 뭔가 깨진다... 어쨌든 gets에서 얼마나 입력받는지 검사하지 않아서 취약점이 발생한다. 코어파일을 열어보려고 ulmit -c unlimited 명령어로 코어파일이 생성 될 수 있도록 만들어 주었다.실제로 코어파일이 생성되는것을 알 수 있다. 이렇게 생성된 코어파일로, 버퍼의 시작주소를 알아보자. 노란색으로 표시한 부분이 다음과 같다.일단은 쉘을 땄다.이 기법은 NOP sled 라는 기법이다. 말그대로 NOP코드에 shell코드를 썰매를 태우는 것이다. NOP코드는 아무것도 안한다는 의미로, ret가 NOP의 어딘가로 변조되었을때, 그대로 놉코드를 따라서 쉘을 실행한다. 안전성을 위해 앞뒤로 NOP코드를 넣어주어서, Exploit은 다음과 같다. NOP + Shellcode + RE..

[FTZ] level11 ( write - up )

level11부터는 홈에 다음 레벨의 setuid가 걸려있고 취약점이 있는 attackme 파일이 주어진다.이 프로그램의 취약점은 strcpy함수에서 터진다. str 변수는 char 형으로 256만큼 선언되어있다. 하지만 입력받을때 256을 넘어가는 수를 입력하면 strcpy 함수로 문자열을 복사할때 256을 넘어가서 복사해버린다. 즉, 잘못된 메모리 공간을 변조 시킬 수 있는것이다. 쉘코드를 실행시켜주는 eggshell의 소스를 복사해서 컴파일시키고, 실행시킨다. 그러면 환경변수에 EGG라는 이름의 환경변수가 등록된다하지만, eggshell을 실행시킬때마다 eggshell의 주소는 달라지게 된다. 따라서, 정확한 환경변수의 주소를 알아오기 위해, 코딩을 해준다. getenv함수는 환경변수의 주소를 가져..

[Linux] 리눅스 보고서

[1] 리눅스와 윈도우의 차이점?(1) CUI와 GUI의 차이우리가 모두 알고있듯이 윈도우 OS는 GUI ( 그래픽 기반 인터페이스 )를 사용하고, 리눅스 OS는 CUI ( 커맨드 기반 인터페이스를 사용한다. ) 처음 시작할때의 진입장벽은 CUI쪽이 조금 더 높을 수 있다고 해도, 리눅스의 여러가지 명령어의 사용이 숙달된 상태라면, CUI가 더 편할정도로 사용할 수 있다.예를 하나 들어보자. 윈도우에서 파일을 다운받으려면 크롬을 키고, 검색을 하고, 사이트에 들어가서, 파일을 찾고 다운로드 하여야 한다. 하지만 리눅스 같은 경우에는 명령어 한 줄 (sudo apt-get install 원하는파일) 로 다운받을수 있다. (2) 다중사용자와 단일사용자와의 차이리눅스는 OS를 설계할 당시부터 한 운영체제에 여..

Layer 7/assignment 2019.05.26

[FTZ] level10 ( write - up )

우리가 했던 1번~9번문제와는 다르게 여기서는 setuid가 걸려있는 취약점이 없다.하지만 여기서 현재 두명의 사용자가 비밀스러운 대화를 나누고 있다고 하였고, 공유메모리의 key값도 주었다.따라서 우리는 코딩으로 두사람의 대화를 도청할 수 있다. 코드는 다음과 같다.코드를 대략적으로 설명해보면.. key_t key : 공유메모리를 구별하는 key값이다. // ★몹시중요★문제에서 주어짐! int size : 공유메모리 크기를 결정한다. // 보통 0으로 함. int shmflg : 여러가지 옵션을 추가할 수 있다. // 현재 공유메모리가 돌고있으므로 CREATE로 옵션 추가!- IPC_CREATE : 퍼미션 0666을 설정한다. 첫번째인수 key에 해당하는 메모리가 없으면 공유메모리를 생성한다.- IPC..