표튜터와 함께하는 Pwnable
-
[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] Basic_FSB Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 6. 11. 21:04
포너블 공부를 처음 시작할 때 가장 어렵게 느꼈던 FSB다.나중에 공부할려고 안풀고 몰아놨는데 이제 해야할 때 인 것 같다.FSB란 Format String Bug의 약자이다. 이 문제는 32bit Binary에서 진행된다. 고맙게도 아무런 Mitigation도 걸려있지 않다. ASLR은 아직 모르겠다.(아마 걸려있을 것 같다)Partial RELRO이기 때문에 우리는 Got Overwirte는 할 수 있다. 우선 문제를 실행시켜보았다.단순히 사용자로부터 입력을 받고 입력받은 값을 출력해주는 것 같다. 이번에는 IDA를 이용해서 코드를 보도록 하겠다.main 함수에는 특별해보이는 것은 없고 누가봐도 굉장히 수상한 이름의 vuln함수를 호출하고 있었다. 역시나 이 함수에서 바로..
-
[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를 이용해서 숫자로 바꾸어주..
-
[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개까지 입력이 가능했다..