Wargame & CTF/FTZ(19)
-
[FTZ] Level14 Write-up
버퍼오버플로우를 통해 check의 값을 \xdeadbeef로 바꾸어야 한다. gdb로 디스어셈블 해보자. fgets로 ebp-56부터 받는다. 그리고 ebp-16이 deadbeef인지 검사한다. "A"*40+"\xef\xbe\xad\xde"하면 check값에 deadbeef가 들어갈것이고, 문제가 풀릴것이다. Level15 : guess what
2019.06.23 -
[FTZ] Level12 Write-up
gets쪽에서 str의 크기를 보지 않고 입력받기 때문에 RET값을 수정할 수 있다. 에그쉘을 사용할것이다. EGG를 export해주고, getegg.c를 컴파일 해준다. attackme를 gdb로 디스어셈블 해보자. [str(256)][DUMMY(8)][SFP(4)][RET(4)] 이런 구조일 것이다. RET에 EGG의 주소값을 넣고 실행시킨다면 쉘이 실행될것이다. Level13 : have no clue
2019.06.23 -
[FTZ] Level13 Write-up
buf를 덮어 씌우고 RET을 덮어 씌워서 이 문제를 풀어야 한다. 하지만 i라는 놈이 있다. buf와 RET 사이에 i가 있다. 그리고 i의 변조 유무를 감지한다. buf를 오버플로우 시켜서 RET을 수정하게 된다면 i도 수정되게 된다. 그렇게 때문에 i 부분을 덮어 씌울때는 아무 값이나 덮어 씌우면 안되고, i의 값을 덮어 씌워야 한다. 일단 buf의 크기와 RET이 있는 장소를 알아보자. [ebp-12], 0x1234567을 보니 [ebp-12]가 i인것을 추측할 수 있다. 그렇다면 0x418 - 12 = 1036이 buf의 크기일것이다. 그리고 esp, 0x8을 한다. 그 뒤에 SFP와 RET이 있을것이다. 결론적으로, 이렇게 된다. [buf(1036)][i(12)][DUMMY(8)][SFP(4)..
2019.06.19 -
[FTZ] Level11 Write-up
저렇게 생겼다. 일단 argv[1]을 str로 복사한다고 한다. 복사할때 취약점이 있는 strcpy를 사용하므로 버퍼오버플로우를 할 수 있다. STR을 쭉 넘겨서 RET값을 쉘코드가 있는 주소값으로 덮어씌우면 그쪽으로 점프가 되고, 쉘이 뜰것이다. 이런식으로 쉘코드를 EXPORT해준다. 앞에 \x90값을 100개 채운 이유는 저 근처 주소만 줘도 쭉 썰매타듯이 쉘코드로 내려가서 실행할 수 있기 때문이다. 그리고 gdb로 뜯어서 메인을 디스에셈블 해보자. 분명히 str을 256 할당했지만 0x108, 264가 할당되었다. gcc가 버젼이 높아지면서 dummy가 붙는다고 한다. RET에 메모리 주소를 넣으려면 str+sfp를 덮어씌우고 메모리 주소를 넣으면 될것이다. 264 + 4 = 268 아까 EGG를 ..
2019.05.30 -
[FTZ] Level10 Write-up
공유 메모리값을 읽는 프로그램을 만들어야 PW값을 구할 수 있다. 공유메모리 KEY값이 있으니 쉽게 구할 수 있을것이다. tmp폴더에 가서 소스를 생성한다. shmget으로 Key 7530을 사용하는 공유메모리를 만든 후 shmid를 s에 int형으로 저장한다. shmat으로 s의 주소를 찾아 *ss에 넣는다. ss를 출력시킨다. Level10 : what!@#$?
2019.05.23 -
[FTZ] Level9 Write-up
hint 파일이다. fgets로 buf에 받는데 밑에 buf2가 go인지 검사를 한다...! 일단 이 문제를 풀려면 메모리구조를 알아야 한다. buf2를 먼저 할당하고 그 후 buf을 할당했다. 그렇다면 buf위에 buf2가 있게 된다. 그 상태에서 buf에다가 buf보다 큰 값을 넣게 되면 buf2로 넘어가서 덮어씌워지게 된다...! 일단 정확하게 값을 알아내기 위해 컴파일을 해보자. 소스파일을 만들고 gcc -o a source.c로 컴파일 해준다. gdb a set di i disas main 으로 main을 뜯어준다. [ebp-40]에서 문자열을 입력받고 [ebp-24]에서 문자열을 비교한다. [ebp-40]은 buf, [ebp-24]는 buf2가 된다. 그러므로 아무 값이나 16자리로 넣고 go..
2019.05.22