본문 바로가기

Stack Canary4

Mitigation: Stack Canary 스택 카나리는 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법이다. 카나리 값의 변조가 확인되면 프로세스는 강제 종료된다. 스택 버퍼 오버플로우 반환 주소를 덮으려면 반드시 카나리를 먼저 덮어야 하므로 카나리 값을 모르는 공격자는 반환 주소를 덮을 때 카나리 값을 변조하게 된다. 이러한 경우 에필로그에서 변조가 확인되어 공격자는 실행 흐름을 획득하지 못한다. 카나리 작동 원리 카나리 정적 분석 // Name: canary.c #include int main() { char buf[8]; read(0, buf, 32); return 0; } 위 코드는 스택 버퍼 오버플로우 취약점이 존재한다. 이를 통해 스택 카나리의 원리를 .. 2021. 12. 16.
World Best Encryption Tool 1. Mitigation GOT Overwrite가 가능하고 실행권한도 없다. 그리고 카나리가 걸려있다. 2. 문제 확인 문제를 확인해보면 입력을 받는데 입력을하니 문자가 암호화되서 나오고 yes를하면 다시 입력을 받고 No을하면 종료한다. 3. 문제 풀이 소스 코드를 보면 입력을 받고 do ~ while문이 있고 그 안에 while문에서 xor 연산을하여 암호화를 한다. strncpy에서 local_48에 local_88을 복사를하느데 0x39(57)바이트 만큼 복사를 한다. 그리고 계속 진행할건지 안할건지 묻고 안한다면 프로그램을 종료하는데 카나리 검사를 한다. 아까 문제확인을 할때 암호화한 값을 출려개주는데 그 부분에서 카나리를 릭하면 될거 같은 느낌이 강하게 든다. gdb로 확인해보자. rbp-0.. 2021. 4. 20.
ssp_001 보호되어 있는 글 입니다. 2021. 4. 6.
ssp_000 보호되어 있는 글 입니다. 2021. 4. 6.