분류 전체보기
-
[HackCTF] Yes or no Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 5. 26. 15:38
이번 문제는 새로나온 문제인 Yes or no 이다.어려운 문제는 아니지만 다른 150점짜리 문제들 중에는 그래도 난이도가 있는 것 같다.(그게 아니라면 내가 어렵게 푼 것일지도.. ㅎㅎ) 해당 문제는 NX가 걸려있고 Partial RELRO이다.따라서 Stack, Heap, .data영역에 실행권한이 없으며Got Overwrite가 가능하다!! 문제를 실행시켜보니 사용자로부터 입력을 받고 있다.내가 입력한 값이 어떠한 조건을 만족하지 못해서인지"Sorry. You can't come with us"라는 출력문을 보여주었다.( 문제 이름도 그렇고 Show me the money인가??.. ) 해당 문제를 IDA로 보기로 하였다.fgets() 함수로 입력을 받고 문자열을 atoi를 이용해서 숫자로 바꾸어주..
-
[Pwnkr] Unexploitable Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 5. 17. 03:01
오랜만에 CTF를 풀었다.ㅎㅎ 앞서 SysROP와 RTC를풀었던 것이 도움이 되었던 것 같다. 풀이가 부족하다면 아래의 링크를 참조하자링크 : SysROP, RTC 처음으로 Pwnkr의 Toddler가 아닌 문제를 풀었다는게 기분이 좋다.이번 문제는 SysROP와 RTC 그리고 Rax gadget을맞춰주는 것이 관건인 문제이다. 우선 scp로 바이너리를 가져오자~~ 문제는 NX가 걸려있고 Partial RELRO이므로Stack, Heap 영역에 실행권한이 없고Got Overwrite가 가능하다. 문제를 실행시켜보면 간단하게 사용자로부터 입력을 받는 것이 전부이다. IDA로 확인해보니 sleep(3) 이후, read함수로 입력을 받고 있었다.buf에 넉넉하게 1295개를 입력 받고 있었다. 어셈블리어 코드..
-
[HackCTF] RTC Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 5. 10. 03:04
이번 문제는 RTC이다. 우어~ 다 풀었는데 마지막 "/bin/sh"에서 시간을 많이 소비했다. 그래도 결국 풀어서 기분은 좋다~스터디 세미나에서 Py0zz1가 발표했던 Return to Csu 기법을알고 있어서 생각보다는 오래 걸리지 않았다. RTC가 딱 봐도 Return To Csu라고 판단해서 저걸쓰면 되겠구나라는 생각이 들었기 때문이다.ㅎㅎ 바이너리는 NX가 걸려있고 Partial RELRO이므로 이전 문제와 같이 Stack, Heap, Data영역에 실행권한이없으며 Got Overwrite가 가능하다. 문제를 실행시켜보았다!사용자로부터 입력을 받는 간단한 구조였다. IDA와 GDB를 이용해서 각각 코드와 어셈블리어로 보았다.read 함수를 이용해서 입력을 받고 있었고 512개까지 입력이 가능했다..
-
[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] Pwning Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 5. 3. 23:50
이번 문제는 Pwning이다. HackCTF에서 가장 많은 삽질을 한 문제인 것 같다.. 허허..풀었으니 너무나 다행이다. ㅎㅎ 바이너리에는 NX가 걸려있고 Partial RELRO이다.Data, heap, stack 영역에 실행권한이 없고got overwrite가 가능하다~~ 사용자로부터 읽어올 바이트 길이를 물어보았다.나는 11을 입력했고 내가 입력한 값을 보여주었다.내가 처음 입력한 길이값만큼을 보여주는 것같다. IDA를 이용해서 코드를 보도록 하자! "취약하다"라는 의미의 vuln함수를 호출하고 있다. get_n이라는 함수를 두 번 호출하고 있으며 처음 입력받은v2(길이)값이 32보다 크면 사이즈가 너무 크다는문자열이 출력된다는 것을 알 수 있었다. g..
-
[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] Poet Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 29. 00:45
이번 문제는 Poet이다. 생각보다 쉬웠다. NX만 걸려있었고 RELRO는 Partial이었다.힙, 스택, 데이터 영역에 실행권한이 없었고got overwrite는 가능하다는 걸 알 수 있었다. 문제를 실행시켜보도록 하겠다.뭔가 값을 입력받고나서 저자가 누구인지 물어본다.총 2번의 입력을 사용자로부터 받고 있었고출력된 문자열을 보니 1000000점을 획득해야한다는 것을 알 수 있었다. 이번에는 IDA를 이용해서 코드를 보도록 하겠다.main함수를 보니 총 4가지의 함수가 돌고 있었고각각의 함수를 살펴보기로 했다. 또한 dowrd 6024E0이라는변수는 1000000이여야 while문을 탈출하고 reward 함수를호출하는 것으로 보아 점수에 해당하는 변수임을 알 수 있었다. 첫 번째로 호출되는 get_po..