전체 글
-
-
level19war game Write up/ FTZ 2018. 11. 18. 00:12
이번 문제는 이전 문제들과 다른 문제이다. 문제의 코드를 보면 setreuid()함수가 존재하지 않는다는 것을 볼 수 있다. 즉, 직접 setreuid()를 넣어줘야 하는데 직접 쉘을 짜도 되고 아니면 에그쉘을 통해서 풀 수 있는 문제이다. 먼저 쉘 코드를 만들기 전에 gdb로 attackme를 분석해보자. 총 스택 길이는 40byte로 buf가 20byte이니 더미값은 20byte이다,그림으로 보면 이다. 이 문제는 bash drop privileges policy 을 활용한 문제인것 같다..----------------------------------------------------------------------------------RedHat 7.0 이후 버전부터 bash drop privileg..
-
level18war game Write up/ FTZ 2018. 11. 16. 01:35
++ 다시 라업을 적을거니 이 글은 참고만,,, 제대로 다시 풀 예정이다.!!! ++--> 결국 다시 풀었다ㅑ,, 풀이 방법은 동일하나 코드 분석을 그나마 조금이라도 정확하게 해보고 싶었다,,ㅎㅎㅎ 음,, 이 문제는 코드만 분석하면 반은 할 수 있는 문제인 것 같다,, ++2018.11.17 다시 코드를 보면 FD_xxx 라는 코드가 있는 것을 볼 수 가 있는데fd는 File Descriptor 의 줄임말로 자신이 사용할 파일 또는 장치에 대한 고유 식별 값이며 리눅스에서 특정한 파일에 접근하기 위한 키라고 할 수 있다.소켓 프로그래밍을 할 때 socket 함수를 사용하여 socket 을 생성하면 정수 값이 반환되는데 이 값이 fd 이다.그리고 fd는 같은 프로그램 내에서 중복되지 않으므로 고유 값으로 ..
-
fflush() 함수programming /C 2018. 11. 15. 15:52
FTZ 를 풀다가 18번에서 fflush() 함수를 사용해서 코딩을 해놓은 것을 발견해 이번엔 fflush 함수에 대해서 공부할겸 포스팅도 한다ㅏㅏ C언어로 입출력과 관련된 프로그래밍을 하다보면 입출력 버퍼에 남아있는 데이터가 정상적인 입출력을 방해하는 경우가 있습니다. 보통 이런 문제는 데이터를 입력받는 과정에서 많이 발생하게 되는데, 이런 경우에는 데이터를 입력받은 뒤 버퍼를 지워주는것으로 해결 할 수 있습니다. 그리고 버퍼를 지우기 위해서 많이 사용하는 함수가 바로 fflush 함수 입니다. 출처: http://mjson.tistory.com/190 [MJay] 라고 한다. 우선 fflush 함수는 #include int fflush(FILE *stream);가 기본 형태다. 일단 fflush 함수..
-
level17war game Write up/ FTZ 2018. 11. 14. 18:44
이 문제는 그냥 보자마자 setreuid만 있길래 환경변수 등록해서 쉘 따는거다 싶어서 했더니 맞았다....힌트의 코드들이고 attackme를 실행했을 때의 모습이다.코드는 이전 문제의 코드와 거의 동일하기 때문에 하지않겠다. main() 함수 모습printit()함수의 모습 총 스택이 56byte고 buf변수 부터 fgets함수까지 길이가 40byte그냥 환경변수를 등록하고 변수 주소 찾은 뒤에 익스하면 된다. 뭔가 되게 쉬웠던 문제다...
-
level 16war game Write up/ FTZ 2018. 11. 14. 17:37
이 문제는 이전 문제들과 다르게 함수를 사용해서 코딩을 해놓았다.. 덕분에 황당함을 감추지 못했다고,,간단하게 코드분석부터 해보면 main() 함수부터 crap 변수를 int형(4) 로 선언해주고 printit()함수의 호출 주소를 call에 저장하고 buf 변수를 char형(20)으로 선언했다. 그리고 fgets 함수를 이용해 표준입력을 받는다. 그 후에는 call 을 불러와 printit()함수를 호출한 후 프로그램이 종료된다. 여기서 생각해볼 수 있는것이 printit함수의 호출 주소를 저장하는 변수가 있는데 이곳을 shell() 함수를 호출하는 주소로 오염시켜버리면? 쉘을 얻을 수 있을것이다.근데 지금 손목이 너무나도 아프다, 그렇다 이건 의식의 흐름이니 무시하고 gdb로 분석을 해보자. 함수가 ..
-
level15war game Write up/ FTZ 2018. 11. 14. 05:09
이 문제는 14번 문제와 90% 동일 하다. 다른 것이라고는 포인터라는게 추가됬는데변수의 메모리 주소값이 같으면 풀리는 문제이다. 이 코드가 문제코드!!!! 그렇다,, ㅇ,, 피곤해죽을거같다.. main+32을 보면 eax와 비교하는 부분이 있는데 0xdeadbeef의 값이 하드코딩되어 있으므로 여기서의 주소값을 잡아서 뽑아내다보면 0xdeadbeef의 주소ㅓ값이 나오는다. 그럼 이전 문제와 스택구조는 같을테니까 그대로 익스하면 된다.나도 내가 뭔말을 하는건지 모르겠다.. 오늘 오후에 다시 풀어봐야되겠다.. 그럼 20000 ++ 2018.11.14 오늘 새벽에 했는데 잠결에 문제를 풀었다.. 근데도 풀렸,,///check 변수의 메모리 주소값과 0xdeadbeef이 일치하면 문제가 풀린다.그럼 check..
-
KERIS 제 4회 정보보안경진대회대회 or IT 일상/CTF 2018. 11. 14. 02:56
KERIS 제 4회 정보보안경진대회 4권역 예선전에서 전국 24위를 하고 대구권역 4위를 했다.. 본선가서는 완전 깨졌지만,,,ㅎㅎ ㅎ...ㅎ다음번엔 1등을 목표로 ,,,~~!!! ------------------------------------------------------------- Write - Up법률, 일반위에 10문제는 그냥 구글링만 잘하면 답이 나온다.사실 문제도 기억이 안난다..ㅎㅎ시스템(PWN)시스템 2 - exec (400P) 처음에 노트북 문제로 vmware의 인터넷이 되지 않아서 2시간 가량 풀지 못했다가 푼 문제이다.nc서버로 접속하면 "Which command do you want to execute?"라고 출력된다. ls 명령어로 파일을 확인해보니 flag 파일이 존재하여 ..