Wargame

    [Pwnable] Simple_Overflow_ver_2

    이번에도 BOF 문제이군요 Mitiagtion 체크 Data를 입력받고 주소 값 출력후에 한 글자씩 띄어서 출력합니다. 그 후 반복 여부를 묻는 간단한 Binary 파일 같습니다. IDA로 열어보겠습니다. BOF 문제인 만큼 BOF가 터지는 부분을 찾아야겠죠? 처음 변수 S에 __isoc99_scanf로 입력받는 부분에서 length 체크를 해주지 않아 BOF가 터질 듯 합니다🙆‍♀️ 전 문제와 굉장히 유사하게 실행시켰을때 나오는 Buf Addr에 ShellCode를 올린 후 ret에 Buf Addr을 넣으면 될거 같습니다. 전 문제와 굉장히 유사하기 때문에 바로 페이로드를 작성해보겠습니다 Binary를 실행시키면 나오는 Buf Addr을 받아와 ShellCode를 넣는 작업을 해줬습니다. 쉘이 잘 따이..

    [Pwnable] x64 Simple_size_BOF

    오늘은 x64 Simple_size_BOF 문제를 정리해보겠습니다. 문제부터 64비트 환경에서 BOF를 터트리라는 냄새가 솔솔 납니다 👋 우선 Mitigation부터 확인을 해보면 확실히 쉬운 문제답게 아무런 보호기법도 걸려있지 않습니다. Binary를 실행시켜 보겠습니다 자살방지 문제랍니다 허헣👀 일단 buf의 주소를 알려주니 NX bit가 걸려 있지 않아 buf 주소에 shellcode를 올린뒤 ret 대신 buf 주소를 호출 하면 되겠습니다. 근데 문제점이 있습니다🤷‍♀️ 계속 buf의 주소값이 바뀝니다 그렇다는 것은 ASLR이 걸려있다는건데 우리는 buf주소를 어떻게 받아올 수 있을까요? 바로 pwntools에 포함되어 있는 기능을 활용할 겁니다. 그건 이따 확인하시져🤘 IDA로 확인해보겠습니다...

    [Pwnable] x64 Buffer Overflow

    오늘은 x64 Buffer Overflow를 정리하겠습니다 제목부터 64비트에서 BOF를 터트리라는거 같군요👀 우선 Mitigation을 확인해보면 NX와 FULL RELRO가 걸려있습니다. IDA로 까보겠습니다. 너무 짧은 코드라 굉장히 쉬운 문제이다. 맨처음 _isoc99_scanf로 변수 S에 입력을 받을텐데 Buffer Check를 해주지 않으니 BOF가 터질 것이다. 그럼 우리는 여기서 쉘을 띄울 수 있는 방법을 생각해야된다. 우선 Mitigation을 확인하였을때 NX bit가 걸려있어 쉘코드 삽입은 불가능 할 것이다. ASLR은 걸려있지 않은거 같으니 RTL 기법으로 풀면 될거 같다. 공교롭게도 callMeMaybe라는 함수가 존재한다. 이 함수의 주소값으로 RET Overwrite를 진행하..

    [Pwnable] 내 버퍼가 흘러넘친다!!!

    오늘은 내 버퍼가 흘러넘친다!!!를 정리하겠습니다 먼저 Mitigration을 먼저 체크하겠습니다 👀 확실히 기초적인 문제여서 그런지 Mitigation이 깔끔합니다. 바로 IDA로 까보겠습니다. name은 전역변수로써 bss 영역에 위치해 있으므로 read에서 BOF가 터지지는 않을거 같습니다. 하지만 변수 s는 0x14만큼 Buffer가 할당되어 있지만 gets로 입력을 받게 되면 Buffer length check를 해주지 않아 BOF가 터질 것 같습니다👏 일단 리눅스에서 Binary를 실행시켜 보겠습니다. 아까 예상했던 것처럼 input을 입력받을때 변수 S에 할당되어 있는 Buffer보다 입력을 더 받을 때 Segmentation Fault가 뜨는 것을 볼 수 있습니다 👍 그럼 우리는 어떻게 쉘..

    [Pwnable] Basic_FSB

    오늘은 FSB 문제를 풀어보도록 하겠슴다. 일단 Binary 파일을 IDA로 까주도록 하겠습니다 ㅇ오잉 별게 없네요 그렇다면 vuln 함수로 들어가 보도록 하겠습니다 천천히 하나씩 살펴보자면 fgets로 변수 s에 입력을 받습니다. 하지만 BOF는 터지지 않을것이고 snprintf도 별 취약점은 존재하지 않습니다. 하지만 return 값으로 printf(&format)을 해줍니다. 여기서 FSB 취약점이 터집니다 자세한 FSB 취약점은 다른분이 설명을 아주 잘 해놓으셨으니 다른 블로그를 참고해주세요...👀 일단 Mitigration을 체크해봅시다. 아주 바람직한 Mitigation입니다. 실행을 먼저 해봅시다 🙌 두번째에 들어가는 포멧스트링에 AAAA가 포인팅 되는 것을 볼 수 있습니다. 일단 정리를 해..

    [Pwnable] Basic_BOF #1 & Basic_BOF #2

    - Basic_BOF #1 너무나도 쉽고 기초적인 문제입니다 바로 IDA로 까보겠습니다 🙌 일단 코드를 대충 보자면 fgets로 s를 45byte만큼 입력받아 BOF가 터지기는 힘들어보입니다. 그 다음 만약 0x4030201에 위치해있는 V5가 특정 값이 된다면 쉘이 따이는군여 일단 GDB로 디버깅해보겠습니다 잘 안보이겠지만 fgets로 입력받은 바로 다음 부분에 Break Point를 걸어준다면 S의 버퍼 크기를 알 수 있을것입니다. 위 사진을 봄으로써 S와 0x4030201에 위치해있는 V5의 거리가 40byte라는 것을 구할 수 있게 되었습니다. 그럼 S에 40byte를 채워넣고 V5의 조건에 있던 값인 0xDEADBEEF를 넣어준다면 쉘이 따이는 행복한 상상을 할 수 있을거 같습니다. 그렇다면 바..