ProjectH4C

    ProjectH4C 3개월 1주차 과제(Dreamhack - basic_exploitation_001)

    또 새로운 문제를 풀어보자. 재미있다 ㅎㅎㅎㅎㅎㅎ 📖 1) 문제 파악 이번에도 c파일이 존재하지만, 보지않고 풀어보도록 하자. 우선 실행을 하기 전에 보호기법을 먼저 보자. NX는 enabled가 되어있으므로 쉘코드는 불가능하지 않을까 싶다. 뭐지 ?? gdb로 열어보자. main함수 내부는 정말 무난하게 생긴 것 같다. 다른 함수들이 있는지 알아보자. read_flag 함수가 보인다. BOF를 통해서 RET를 0x080485b9 으로 덮으면 될 것 같다. 이게 main함수이다. read_flag 함수는 cat flag 명령을 실행시킨다. 📖 2) 문제 분석 방심은 금물이라지만, 이 문제는 매우 쉽게 풀 수 있을 것 같다. 먼저 gets함수에서 값을 끝없이 받아들일 수 있다. 하지만 s는 128 바이트이..

    ProjectH4C 3개월 1주차 과제(Dreamhack - basic_exploitation_000)

    드림핵의 문제들은 어떨까. 한 번 풀어보도록 하자. 📖 1) 문제 파악 이렇게 현재 buf의 위치를 출력해주고, 값을 입력받는다. 우선 프로그램에 적용되어있는 보호기법들을 확인해보자. NX가 적용되어있지 않은것을 보아 쉘코드를 올릴 수 있지 않을까 라는 생각이 들었다. 문제는 c파일을 제공했지만, 그래도 그냥 IDA로 분석해보겠다. 먼저 main 함수이다. 우선 initialize 함수는 그냥 30초지나면 TIMEOUT을 외치는 함수이다. 그래서 우리가 눈여겨 봐야할 부분은 scanf쪽이다. 먼저 v4는 128바이트만 선언이 되었지만 141바이트를 받아준다. 136바이트만 받더라도 RET까지 덮을 수 있기에 쉘코드를 넣으면 될거라고 생각하였다. 별 다른 함수가 존재하지는 않는다. 📖 2) 문제 분석 만약..

    ProjectH4C 3개월 1주차 과제(HackCTF - 내 버퍼가 흘러넘친다!!!)

    버퍼가 흘러 넘친다라는 말은 매우 BOF로 받아들여진다. 문제를 좀 더 분석해보도록 하자. 📖 1) 문제 파악 실행이랑 출력은 매우 정상적으로 이루어진다. main 함수에서는 별 다른 이상한것은 보이지 않는다. read, gets에서 어떻게 취약점이 발생할 수는 있을 것 같다. 다른 함수들이 있는 지도 확인해보자. 헉 의심이 가는 함수들도 존재하지 않는다. 혹시 셸코드를 써야하는 문제인가 ??? IDA로 뜯어보도록 하자. 으으으으으으으음,,,,,,, 우선 gets에서 받는 값을 지정해주고 있지 않다. 비록 s는 20바이트만큼 선언되었지만, 어떻게 어떻게 해볼 수 있을 것 같다. 아니면 name으로 s 버퍼를 덮어버릴 수도 있긴 하겠다. 📖 2) 문제 분석 우선 쉘코드를 넣어야 한다고 생각했다. 그 쉘코드..

    ProjectH4C 3개월 1주차 과제(HackCTF - Basic FSB)

    우선 이번 문제의 이름은 Basic FSB이다. FSB가 무엇인지 먼저 공부를 해보자. 먼저 FSB는 Format String Bug의 줄임말이다. 포맷스트링 버그는 이전에 공부를 해본적이 있다. (엄청 예전에 ....) 우선 문제를 풀면서 복습을 해보자. 📖 1) 문제 파악 이렇게 기본적으로 aa를 넣는다면 aa가 출력이 되지만, 서식문자를 집어넣는다면, 그에 해당하는 값을 출력하게 된다. 좀 더 자세히 알기 위해 gdb와 IDA를 통해 까보도록 하자. 어셈블리 코드는 꽤 간단하다. vuln함수를 좀 더 알아보자. 그렇군.... ?? IDA로도 열어보자. 먼저, main 함수이다. 마찬가지로 vuln 함수를 좀 더 까보자. 흠....ㅁ..ㅁ.ㅁ.ㅁ.ㅁ.ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,ㅁ,..

    ProjectH4C 3개월 1주차 과제(HackCTF - Basic BOF#2)

    포너블... 아직 기초지만 너무 재미있다. 📖 1) 문제 파악 ...? 우선 gdb로 열어보도록 하자. 📖 2) 문제 분석 처음에 nc 접속하게 되었을 때 보았던 부분이 이곳인 것 같다. 함수 자체는 매우 간단하다. v5라는 포인터 변수에 sup 함수의 주소를 넣어준다. 이후 fgets함수를 실행하고 v5를 실행한다. sup함수는 그냥 puts만 진행한다. 한 가지 중요한것은, shell() 이라는 함수가 존재한다는 것이다. (하지만 main 내에서는 등장하지 않는다.) 이 shell 함수는 /bin/dash를 실행하는 함수이다. 즉, 우리는 s에서 BOF를 발생시켜 v5를 shell 함수의 주소로 덮어주어야 한다. 이렇게 스택이 쌓여있다고 보면 되겠다. 📖 3) 문제 분석 128byte를 채우고 she..

    ProjectH4C 3개월 1주차 과제(HackCTF - Basic BOF#1)

    📖 1) 문제 파악 우선, 입력된 값과, 그 값과 관련된 메모리 주소를 출력해주는 것 같다. 아직 잘 모르겠으니 gdb와 IDA를 통해 분석해보자. 코드가 그리 길지는 않다. 그래도 중요한 부분만 따로 보자. 📖 2)문제 분석 0x080484dc :mov DWORD PTR [ebp-0xc],0x4030201 0x080484e3 :mov eax,ds:0x804a040 0x080484e8 :sub esp,0x4 0x080484eb :push eax 0x080484ec :push 0x2d 0x080484ee :lea eax,[ebp-0x34] 0x080484f1 :push eax 0x080484f2 :call 0x8048380 0x080484f7 :add esp,0x10 0x080484fa :sub esp,0..