pwn

    [Dreamhack] - shell_basic(WRITEUP)

    [Dreamhack] - shell_basic(WRITEUP)

    오늘은 dreamhack pwn 로드맵의 첫 문제인 shell_basic을 풀어 볼 것이다. dreamhack 로드맵 강의에서는 어셈블리 파일을 직접 만들어서 쉘코드에 대해서 배우는데 이 방법은 너무 귀찮기 때문에 pwntool의 shellcraft를 이용해 볼 것이다. shellcraft는 잘 사용하지 않기 때문에 아래의 글을 참고하여 풀었다. https://m.blog.naver.com/songblue61/221308705090 그럼 본격적으로 풀이를 시작해 보겠다. 먼저 문제 설명을 확인해 보면 플래그의 파일 이름을 확인할 수 있다. 그리고 문제에서 주어진 서버로 접속을 해보면 아래와 같이 shellcode를 입력하는 란이 주어진다. 이제 exploit 시나리오를 대충 짜 볼 수 있다. 1. "sh..

    SSP 보호기법 이란?(우회하는 방법)

    SSP 보호기법 이란?(우회하는 방법)

    Stack Smashing Protector(SSP)는 메모리 커럽션 취약점 중 스택 버퍼 오버플로우 취약점을 막기 위해 개발된 보호 기법이다. SSP의 원리는 스택 버퍼와 스택 프레임 포인터 사이에 Random값을 삽입하여 함수 종료 시점에서 랜덤 값 변조 여부를 검사하여 스택이 망가뜨려졌는지를 확인하는 방식이다. 그 랜덤 값을 Canary(카나리)라고 한다. 마스터 카나리는 main 함수가 호출되기 전에 랜덤으로 생성된 카나리를 스레드 별 전역 변수로 사용되는 TLS(Thread Local Storage)에 저장한다. TLS 영역은 _dl_allocate_tls_storage 함수에서 __libc_memalign 함수를 호출하여 할당한다. 아래는 _dl_allocate_tls_storage함수이다. ..