시스템해킹
-
[HackCTF]Unexploitable #3 Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 8. 13. 12:50
이번에 풀어볼 문제는 Unexploitalbe #3이다.풀면서 들었던 생각은 자주자주 풀지않아서 그런지 머리가 굳는 느낌이다..ㅠ저번에도 그랬지만 어쨌든 풀어서 참 다행이다.. ㅎㅎ 해당 바이너리는 NX가 걸려있고 Partial RELRO이다.그러므로 .data, stack, heap 영역에 실행권한이 없으며Got Overwrite가 가능하다는 것을 알 수 있었다. 우선 바이너리를 실행시켜보겠다.특정한 문자열이 출력되고나서 사용자로부터 입력을 받고 있었다. IDA를 이용해보니 역시나 fgets함수 즉, 사용자로부터 입력을 받는 부분에서버퍼오버플로우를 일으킬 수 있는 취약점이 있다는 것을 알 수 있다. 조금 더 자세히 들여다보면 rbp-0x10 즉, 16개의 버퍼의 크기보다훨씬 큰 0x100을 입력할 수 ..
-
[HackCTF] Unexploitable #1, Unexploitable #2 Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 7. 18. 13:24
요즘 다른거 하느라 바빠서 진짜 오랜만에 포너블을 풀었다.. ㅠㅠ많이 까먹었을까봐 걱정했는데 그래도 새록새록 떠올라서 다행이다.이번에 풀어볼 문제는 Unexploitable #1과 Unexploitable #2 라는 문제이다.두 문제가 같은 방식으로 풀리므로 한 번에 진행하도록 하겠다.기준은 Unexploitable #1을 기준으로 설명을 진행하도록 하겠다. 음.. 푸는 방법은 쉽게 떠올랐지만 뭔가 gadget을 사용하는 센스가늦게 떠올라서 생각보다 시간이 걸렸다... 우선 바이너리를 보도록 하겠다. 64bit이며 dynamically linked 방식을 이용하고 있다. Mitigation의 경우 NX bit만 걸려있어서 .data, stack, heap 영역에실행권한이 없고 Partial RELRO이기..
-
[HackCTF] World Best Encryption Tool Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 6. 10. 00:26
이번 문제는 World Best Encryption Tool 이다!! Payload를 짜는데 많이 헷갈려서 조금은 오래걸린 것 같다... 해당 바이너리는 Canary가 걸려있는 상태이고 NX가 적용되어있다.RERLO의 경우 Partial이므로 stack, heap, data영역에 실행권한이없으며 Got Overwrite가 가능하다. 하지만 Canary가 적용되어있기때문에 BOF시에 Canary를 신경쓰지 않으면 경고메세지가 출력될 것이다. 문제를 실행시켜보면 우선 사용자로부터 입력을 받는다.입력값의 길이에는 제한이 없는 것으로 보여진다. 그 뒤,사용자가 입력한 문자열중 일부의 길이를 암호화하는 것 같다.마지막으로 다른 text를 암호화할 것인지 물어보고 "Yes"를 입력하면입력을 계속해서 받고 "No"를..
-
[HackCTF] Register Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 5. 26. 20:07
이번에 풀어볼 문제는 64bit에서 진행되는 Register이다. 또하나 교훈을 얻게되는 문제였다!!* Thanks to Py0zz1 * 이 문제도 역시 NX와 Partial RELRO를 가지고 있다.그러므로 stack, heap, .data 영역에 실행권한이 없으면서Got Overwrite가 가능하다는 것을 알 수 있다. 문제를 실행시켜보도록 하겠다.RAX, RDI... 등의 register에 값을 입력하는 것으로 보이는Code가 보여진다. 또한 한 바퀴를 돌고나니까다시 RAX부터 register 값을 입력받고 있었다. 이번에는 IDA를 이용하여 코드를 보도록 하자!! main 함수의 경우 5초의 alarm 함수가 진행되었으며build 함수를 호출하고 있는 것을 알 수 있었다. < bui..
-
[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를 이용해서 숫자로 바꾸어주..
-
[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가 존..