CTF
-
[HackCTF] SysROP Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 5. 7. 23:21
이번 문제는 SysROP이다. HackCTF를 풀면서 가장 많은 시간을 썼다.새로운 공격기법을 배워서 기분은 좋다~ㅎㅎ 풀면서 Py0zz1한테 꿀팁도 많이 얻었다 바이너리는 이전 문제들과 마찬가지로 NX가 걸려있고Partital RELRO이므로 Stack, Heap, Data 영역에실행권한이 없으며 Got Overwrite가 가능하다. 바이너리를 실행시켜보니 사용자로부터 입력을 받는게 전부였다. IDA를 이용해서 코드를 보도록 하자!!역시 사용자로부터 read 함수를 이용해서 입력을 받았고0x78 즉, 120개를 입력할 수 있었다. 어셈블리어 코드로 확인을 해보았다.p main을 입력했지만 Symbol을 load할 수 없다고한다. 그 이유는 바로 stripped(안티디버깅)이 되어있어서이다. 그래서 ID..
-
[HackCTF] g++ pwn Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 30. 19:29
이번 문제는 g++ pwn이다. 살짝 어렵다고 생각할 수 있는 문제이다. Mitigation은 NX만 걸려있었다. ( 스택, 힙, 데이터 영역에 실행권한이 없음 )Partial RELRO이기 때문에 got overwrite도 가능하다 . 문제를 실행시켜보았다.실행을 시키면 사용자로부터 입력을 받고 있다.입력을 하고나면 "So," 다음에 사용자가 입력한 값을 출력해준다. 이번에는 IDA를 이용하여 코드를 보도록 하자. main에서는 딱히 별다른 것이 없었고 vuln이라는 함수를 호출하고 있었다.이름이 vuln인 것을 보니 여기가 바로 취약점이 존재하는 곳인 것 같다. 입력은 fgets로 받고있었는데 길이제한이 있으므로 단순 BOF는아닐 것 같았다. 그래도 혹시모르니 확인을 해보..
-
[HackCTF] 1996 Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 29. 11:08
이번 문제는 1996이다. 굉장히 쉬운 문제에 속하는 편이다. NX가 걸려있어서 스택, 힙, 데이터 영역에 실행권한이 없고Partial RELRO기 때문에 got overwrite가 가능하다. 문제를 실행시켜보았더니 그림과 같은 문자열이 출력되고사용자에게 입력을 받고 있었다. 문제는 또한 바이너리와 cpp 코드도 주어줬다.단순히 BOF로 충분히 풀 수 있는 문제같아 보였다.getenv 함수로 buf에 값을 입력하도록 되어있었는데역시 입력받는 길이를 확인하지 않기 때문에 BOF가 가능했고BOF를 통해 ret를 spawn_shell로 덮는다면 해당 함수가실행되면서 "/bin/bash"로 인해 쉘을 딸 수 있을 것이다. main함수에서의 getenv 함수 호출 전을 살펴보면rbp-0x410에 인자 buf가 존..
-
[HackCTF] Look at me Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 26. 16:49
이번 문제는 Look at me 이다.지금까지는 보통 dynamically linked 방식의 바이너리였다면 이번 문제는 statically linked 방식의 바이너리였다.그래서 바이너리 내부에 많은 함수가 들어있었다. 해당 바이너리에는 NX가 적용되어있어서 스택에Shellcode를 넣더라도 실행권한이 없어서 실행되지 않는다. 코드는 굉장히 간단한 형태를 가지고 있었다. gets함수를 이용해서 BOF를 일으키면 된다는 건 쉽게 알 수 있었다. 음.. 어떤 방식으로 풀어야 할지 고민해보았는데일반적으로 쉘을 얻을 때 system함수를 이용하거나쉘코드를 사용해서 해결하는데 이 문제에 주어진함수에는 system이 없다. 듣기로는 execute함수를 사용하면된다는데 ex..
-
[HackCTF] Gift Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 25. 19:22
이번에 풀 문제는 Gift이다. 해당 문제는 NX만 걸려있는 상태이다. 문제를 실행시켜보았다.프로그램이 실행되면 어떠한 주소 두 개를 출력해주고사용자에게 입력을 받는다. 나는 "aaaa"을 입력하였다.입력 후에는 내가 입력한 문자열이 출력되고한번 더 사용자에게 입력을 받는다. IDA를 이용해서 코드를 보도록 하겠다.굉장히 간단한 코드였다. 그리고 출력해주는 주소는 binsh과 system이었다. binsh은 "/bin/sh"이 아닐까? 하는 생각을 했었는데 눈으로 확인해보니그냥 고정주소인 영역을 준 것 같았다. 이름을 binsh이라고한 것으로보아 이 곳에 "/bin/sh"을 넣어서 쓰라고 준 것 같다. system의 경우 system 함수였다. 역시 ASLR이 걸려있어서계속해서 주소가 바뀌므로 기준으로 ..
-
[HackCTF] ROP Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 24. 00:47
이번 문제는 ROP이다. 제목 그대로 아주 기본적인 ROP였다.그래서 처음 접한다면 어려울 수 있으나 한번이라도 ROP를해봤다면 굉장히 쉬운 문제가 될 것이다. 역시 문제 제목이 ROP라 그런지 Partial RELRO였다. 즉, Got Overwrite가 가능했고 NX가 걸려있으므로Stack이나 Heap 영역에 실행권한이 없는 상태이다. 우선 문제를 실행시켜보았다.사용자로부터 입력을 받았고 입력 후에는"Hello, World!"라는 문자열을 출력해주었다. 여기까지 진행했을 때 이 입력하는 부분을공략하게 될 것이라고 예측했다. 아니나 다를까 굉장히 친절하게도 이 문제에서는대놓고 함수명이 취약한 함수였다ㅋㅋㅋ 해당 함수를 보니 예상한대로 입력하는 부분이 존재했고버퍼보다 큰 값을 입력할 수 있었다. 이 부분..