해커스쿨.Section 20 Section 20 SetUID bit란? 기술적인 이야기를 하기 전에 해커스쿨의 만화를 통해서 쉽게 이해해보자 클럽에 들어려던 주인공은 복장때문에 들어갈 수 없었다 친구에게(엄마같지만) 복장을 빌려 재도전! 친구에게 빌린 복장으로 무사히 클럽에 들어갈 수 있는 권한을 얻었다! 하지만 복장은 빌린것이기 때문에 클럽이 끝나면 다시 친구에게 돌려주게된다. 위의 내용은 SetUID를 쉽게 이해할 수 있도록 그려진 만화이다. SetUID 역시 일반 사용자가 관리자 권한을 "일시적"으로 얻을 수 있는 방법이다. 정해진 일을 수행하면 다시 권한을 반납하게 된다. 비밀번호를 바꾸는 경우와 같이 일반인에게 쉽게 권한을 줄 순 없지만 꼭 필요한 기능에 사용되며 제약이 존재하여 보안상 큰 문제가 되지 않지만 만약 해당 프.. Study/system 7년 전
해커스쿨.Section 14 Section 14 각 영역의 메모리 주소 값 확인해보기 http://g0pher.tistory.com/268 이번 강의는 위 페이지에 나오는 첫번째 사진을 보며 이해하면 좋다 main함수의 주소를 살펴보면 0x00000000에 가까운 주소가 아니다.코드영역의 앞쪽에는 가상메모리가 텅 비어있는 상태로 존재한다. 이러한 영역은 접근시 오류가 발생한다. 이번에는 전역변수와 정적변수가 초기화된 데이터의 주소를 살펴보면 main보다 약간 뒤쪽에 존재한다. 이번에도 전역변수와 정적변수를 선언하지만 이번엔 초기화 하지 않은 상태일 때의 주소를 살펴보자 초기화된 데이터보다 초기화 되지 않은 데이터가 더 뒤쪽에 형성됨을 알 수 있다.또한 초기화된 데이터와는 다르게 정적변수가 더 앞쪽에 형성됨을 알 수 있다. 이번에는 .. Study/system 7년 전
해커스쿨.Section 12 Section 12 트레이닝 코스 : 메모리 값 변조하기 위의 코드를 보고 메모리 값을 변조해보자 우선 "abc" 인자와 함께 실행해보면 아래와 같은 결과가 나온다 타겟을 DOG에서 CAT으로 바꾸어보자 위의 모습처럼 어렵지 않게 바꿀 수 있다. 이번에는 숫자를 바꾸어보자 코드는 아래와 같다 실행결과는 아래와 같다. 이번에도 "abc"를 인자로 넘겨주니 아래와 같이 나왔다 이번에는 아까처럼 오버플로우를 일으키면 아래와 같이 잘 되지 않는다. 입력한 5678은 문자로 받아들이기 때문에 이의 아스키코드인 35 36 37 38이 들어가게 된다. 이러한 경우에는 숫자로 인식할 수 있도록 파이썬이나 perl을 이용해주어야 한다. 위를 참고하여 사용하면 된다. 프로그램을 perl문법에 맞춘 인자와 함께 넘겨주면 위.. Study/system 7년 전
해커스쿨.Section 7 Section 7 함수란 무엇인가요? 우리는 보통 코드를 짤 때 사용자 정의 함수를 따로 만들어서 사용한다 이는 main함수에 코드가 몰리는 것을 방지하여 가독성을 높이고, 코드 재활용을 편리하게 만든다. 이러한 함수는 수학에서의 함수처럼 입력을 받아 내부에서 짜여진 논리를 실행한다. 그러나 수학에서의 함수와 다른점은 코드에서의 함수는 반환값이 없을 수 있다는 점이다선언시 반환타입이 void일 경우가 이에 해당한다.이는 함수보다는 "프로시저"라고 부르는 것이 맞다. Study/system 7년 전
해커스쿨.Section 4 Section 4 "메모리 주소" 와 친해지기 아래 코드는 i라는 변수를 선언한 후i의 정보를 알아보는 코드이다 위에서 볼 수 있듯이변수를 선언하는 것은 메모리 공간을 사용하는 것이고int형이기 때문에 변수의 시작주소부터 4바이트 만큼 사용하게 된다변수에 77이란 값을 넣은것은 해당 메모리공간에 77의 값을 넣은것과 같고메모리 주소를 출력해보면 첫번째 메모리주소가 나온다 Study/system 7년 전
해커스쿨. Section 1 Section 1프로그램을 공격한다!? 보통 언어를 배우면서 만드는 프로그램은 내가 설계한대로 컴퓨터가 시행하게 된다그러나 이를 어떻게 공격할 수 있을까? 프로그램을 제작할 때 단순 출력만을 이용한 프로그램은 우리가 지금 배울 시스템 공격의 대상이 아니다또한 그러한 프로그램은 사용자에 따라 유연하게 대처하기 힘들다 사용자에게 더욱 편하고 유연한 프로그램은 '입력'을 받게된다.이 입력에 따라 프로그램의 흐름이 바뀐다 이 '입력'에서부터 취약점이 발생할 수 있다프로그램이 받기위해 설정한 저장공간보다 더 많은 양의 데이터를 입력하게 되면프로그램은 오류를 반환하게 된다 자신의 한계를 드러낸 것이다 실제로 실습해보면 Segmentation fault 에러가 뜨는것을 볼 수 있다 이것이 버퍼오버플로우(BOF)의 가.. Study/system 7년 전