PWN
-
[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..
-
[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..
-
[Pwnkr] Flag Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 3. 28. 19:53
이번 문제는 packing에 관련된 문제였다. 파일의 정보를 보도록 하자. 64bit 형식에 statically linked가 되어있으며 stripped이다. -> stripped이므로 디버깅이 불가능하다!! 실행을 시켜보니 그림과 같은 문자열만 출력되었다. 뭐지?? 전혀감이오지 않았다.... 혹시몰라서 hex editor를 이용해서 파일을 열어보았다. 오잉? UPX?? UPX로 패킹이 되어있었다!! 아직까지 감은 안오지만 일단 upx.exe를 이용해서 언패킹해보았다. 언패킹을 하였더니 stripped가 -> not stripped가 되면서 디버깅이 가능했다. 바이너리를 gdb로 디버깅해보았더니 바로 flag라는 녀석이 보였다. 위의 사진처럼 print flag로 바로 볼 수도 있고 아래처럼 그냥 따라가..