전체 글 289

HTML (Hyper Text Markup Language) 개념

HTML은 Hyper Text Markup Language의 약자로. 웹 브라우저에 보여지는 화면 그 자체라고 말할 수 있다. HTML을 일단 알아보자면, 기본적으로 테그(Tag)라는 개념이 있다. html 파일의 예문을 한번 보자. 이런 구조가 눈에좀 들어오나 모르겠다. 걍 저게 테그다. 시작테그와 닫기테그() 이런 테그들이 HTML에 100가지가 넘게 있다고 한다. 뭐.. 글자 크기 바꾸기, 줄바꾸기, 속성 부여하기 등등.. 많은 테그들이 있는데. 다 외울 필요없다. 자주 쓰이고 눈에 밟히는 녀석들만 외워주면 된다. 모르면 그때그때 구글링을 하면된다. 구글링은 진리다. 그럼 이렇게 난잡하게 적혀있는 테그를 뭐 어떻게 봐야 하나. 쉽다. 그냥 시작테그와 닫기테그 안에 있는 녀석들이 상위테그에 종속되어 ..

PIE (Position Independant Executable)

PIE는 Position Independant Executable 의 약자, 한글로 해석해보자면 위치 독립적 실행가능? 이런 말이다. PIE를 공부하기 이전에 일단 PIC(Position Independant Code) 와 유사하다는 것을 알고계세요. PIC는 공유 라이브러리 파일을 생성할 때 이 라이브러리 파일이 어떤 파일과 링크가 될지 알 수 없기 때문에 -fPIC 옵션을 주어 다른 파일과 동적 링크가 가능하도록 해주게 된다. 이와 비슷한 맥락으로.. PIE는 위치 독립적으로 실행 가능한 코드 형태로 컴파일 한다.. 그런 뜻이다. 예제를 보면서 이해해봅시다. ---------------------------------- #include void foo(){ printf("hello\n"); } int..

SSP (Stack Smashing Protection)

SSP란 gcc 4.1버전 이후에 지원하는 BOF 방어 기법이다. 흔히 Propolice 라고 하는데, 일단 이녀석은 스택가드 다음에 나오는 방어 기법이다. 일단 아래 캡쳐화면을 보고 설명하게씀. 저번에 설명한 것과 같다. canary가 변조 되면 RET가 변조 되었다고 가정하는 것이다. 그림에서 mov eax, gs:0x14 mov DWORD PTR [ebp-0xc], eax 이 부분이 카나리아 값을 스택에 저장하는 부분이다. 그리고 __stack_chk_fail@plt 이부분이 카나리아 변조 여부를 체크하는 루틴이다. 스택가드의 정확한 동작을 자세히는 모르지만 일단 SSP는 카나리아를 넣어두고 변조 여부를 체크하는 루틴을 호출하여 확인하는 거다. 이 부분에서 차이나는듯. SSP는 GCC에서 옵션으로 ..

스택 가드 (Stack Guard)

이건 일명 까나리(?) 라고 불리는 스택 쿠키가 사용되는 기법 중 하나다. 원래 명칭은 Canary value임. 스택 쿠키 중에 여러가지 종류가 있는데 Propolice, Stackguard 등이 있는데 지금 언급하려는게 스택 가드이고, 다음에 설명할 SSP가 별칭으로 Propolice 라고 하는데.. 기회가 된다면 다시 한번 정리를 하겠음. 일단 스택 가드는 컴파일러 옵션으로 지정할 수 있는 방어기법이다. 스택에 프로그램 실행 시 canary 이놈을 심어두는 거임. ebp와 지역변수 공간 사이에 이녀석을 놔두는데, 보통 BOF 공격할 때 RET를 변조 시키려면 무조건 SFP와 아래의 공간이 다른 값으로 가득차야 한다는 것을 포인트로 잡고 canary를 두어 이 값이 변조되면 BOF 공격이 일어났다고 ..

스택 쉴드 (Stack Shield)

스택 쉴드에 대해서 알아보자. 암만 찾아도 자료가 너무 안나와서 해외 웹페이지에 있는 내용을 참고함 http://security.stackexchange.com/questions/44131/stack-guard-vs-stack-shield Stack Shield is based on copying the return address to a safe area, and checking the return address at the end of the function. If the return address is overwritten, this will no longer match and the attack will be detected. 리턴 어드레스를 안전한 공간에 복사해두고, 함수가 종료될 때 현재 스택..

반응형