Wargame
-
HackCTF OffsetWargame/HackCTF 2019. 10. 22. 02:04
This is Offset 오프셋은 굉장히 간단히 말하자면 어느 주소와 다른 주소와의 거리를 나타내는 값이라고 보면 되겠습니다 프로그램을 실행해보면 '어떤 함수를 호출하길 원하니?'하고 물어놓고 대답을 받으면 그대로 재낍니다. 양아치네요 그걸 힌트로 삼아 함수목록을 보면 main을 포함해 5개의 지정함수가 있다는 걸 확인할 수 있습니다 그 중 뭔가 수상쩍은 함수를 호출했더니.. 그래도 재끼네요. 양아치 다른 글들에서는 보호기법 체크하길래 저도 체크해봤습니다. 하지만 전 뭔지 모르므로 간단히 살펴보겠습니다. 참고로, 이 프로그램은 NX와 PIE 보호기법이 걸려있습니다 1. PIE(Position Independent Executable) : 바이너리 주소가 상대적인 주소로 랜덤하게 매핑시키는 기법이다. A..
-
Suninatas Challenge 16Wargame/Suninatas 2019. 10. 18. 20:39
가끔씩은 디저트도 먹어줘야합니다. 써니나타스가 처음은 아닌데, 여기도 포너블 문제가 있을까 해서 찾아보다가 system 항목이 있길래 들어와봤더니 시스템이 아니라 네트워크였잖아? 아무튼 재밌네요 첫 화면입니다. 써니나타스 사이트 회원의 비밀번호를 찾을 수 있냐는 문제의 설명과 155의 저렴한 점수로 보아 간단한 스니핑 문제일 거 같네요. 일단 http 프로토콜로 오간 정보를 살펴보면 이렇게 몇몇개가 나오는데 그중 /member/어쩌구 하는 페이지가 수상하네요. 고로 string - /member/어쩌구로 문자열을 찾아서 삽질의 폭을 줄여봅시다 잘 안 보이겠지만 아래에서 두번째, /member/mem_action.asp 페이지를 하나하나씩 들어가보면 맨 아래에 Hid와 Hpw가 있는 것을 확인할 수 있습니..
-
HackCTF Simple_Overflow_ver_2Wargame/HackCTF 2019. 10. 17. 23:24
* 수행 존나 많은 주간 프로그램은 심플합니다. Data : 구간에 값을 입력하면 버퍼주소 : 입력한 값이 바이트별로 들어가는 것 같습니다. y나 n 입력을 통해 반복 여부를 제어할 수 있네요. 그럼 gdb로 까보 기에는 조낸 기네요. 그럴땐 헥스레이입니다. 훨씬 짧죠? printf 다음에 if구문이 있네요. 그 구문에서 scanf 함수를 포함하는데, 이 scanf함수는 s[128]에 값을 저장하는거 같습니다. 이 배열 s는 위치가 ebp-88인데 뭐 이 정도 단서 가지고도 충분히 풀 수 있을듯 합니다(물론 제 힘으로는 아님ㅎ) 두 단계로 나눠서 페이로드를 짜야할 것 같습니다. 초반에 버퍼의 주소를 알아낸 다음에 이를 system_addr에 저장하고, 두번째에는 이를 리턴주소로 삼아 앞에는 A로 왕창 도..
-
HackCTF x64 Simple_size_BOFWargame/HackCTF 2019. 10. 15. 21:35
이번엔 내용이 별로 없습니다 ! 실행화면입니다. 실행 할때마다 buf 주소가 달라지네요 마지막에 한번 입력받은 뒤에 프로그램이 끝납니다. 복습을 하자면, lea는 mov와 달리 좌변에 우변의 주소를 입력해주는 함수입니다. mov는 값을 넘겨주죠? 해서 main+51이나 main+76에서 보다시피 rbp-0x6d30이 수상합니다. 이는 27952d인데 거기에 8byte 추가해서 27960만큼 넘겨줘야 해요. 스포 하나 하자면 rbp-0x6d30에는 buf 함수 주소가 들어있습니다ㅎ.. printf 함수 직후에 rbp-0x6d30이 있는걸 봐서 그것을 유추할 수 있습니다. 이번에 우리가 쓸 쉘코드는 23바이트기 떄문에 27960 - 23만큼 NOP 또는 아무 값이나 넣어주고, 그 뒤에는 buf 주소의 값을 ..
-
HackCTF x64 Buffer OverflowWargame/HackCTF 2019. 10. 15. 01:15
빨리 잘거에요ㅎ 이번엔 64비트 프로그램 BOF문제라서 IDA64를 써야하나 싶었어요 그래서 찾아보는데 토렌트로 다운받기가 너무 오래 걸려서 그냥 gdb로 까서 해결해봤습니다 물론 인터넷의 힘을 빌려서..^^ main 함수를 보면 별다른 단서가 없습니다. 특별히 다른 함수를 호출하지도 않고, 그냥 입력받은 그대로 앞에 Hello를 붙여서 출력하는 프로그램 같이 보여요 그래서 타함수 목록을 보겠습니다 그러면 main함수 직전?에 callMeMaybe 함수가 보이는데 굉장히 의심스럽죠 아마도 쉘함수가 아닐까 추측됩니다 까보면 rbp-0x20에 0x400734 주소에 있는 값을 넘겨주는데, 이를 rax와 rcx에도 넘겨주는 거 같네요(참고 : rax는 64비트 프로그램의 eax입니다) 이젠 0x400734 주..