Did you know that you can navigate the posts by swiping left and right?

Reversing 입문 / 이해

05 Feb 2017 . category: Reversing . Comments
#reversing #hacking #error #theory #security

Reversing 입문 / 이해

프로그램은 단순한 함수의 연속이며, 복잡한 규칙에 불과하다. 프로그램을 공격하는 것은 어떤 일을 컴퓨터가 수행하게끔 하는 현명한 방법이다. 프로그램의 보안 문제점을 찾고 이용하는 것은 상당한 창의력이 요구되는 일이다.

1 차이 오류 (Off by One Error)

프로그래머가 1을 잘못 세어서 생기는 오류이다. 프로그래머의 실수로 인해 발생하는 오류.

울타리 말뚝 오류 (Fencepost Error)

프로그래머가 아이템 간 공간의 수와 아이템 수를 착각할 때 발생한다.

  • 100미터 짜리 울타리를 세우는데 10미터 간격으로 기둥을 세운다면 기둥은 몇개가 필요할까? 10개가 아니라 11개이다.
  • N부터 M까지에 있는 값을 처리하려고 한다. N = 5, M = 17이다. 프로그램은 몇 개의 아이템을 처리하는가? 17 - 5 = 12 이므로 12개가 아니다! 13개이다.

유니코드(Unicode) 확장 오류

웹서버는 사용자들이 특정 디렉터리 내 프로그램과 파일을 읽고 쓸 수 있게 해야한다. 그러기 위해서는 사용자에게 제한이 필요하다. 제한이 없다면 시스템 전체에 접근할 수 있기 때문이다. 마이크로소프트의 IIS라는 웹서버 프로그램은 유니코드 문자 세트 지원 기능을 추가했다. 그래서 \ 대신에 %5c를 사용함으로써 해커는 디렉터리 구조를 거슬러 올라갈 수 있었고, 보안 문제가 발생할 수 있었다. 새드마인드(Sadmind) 웜과 코드레드(CodeRed) 웜은 이 유니코드 변환 기법을 사용해서 웹 페이지를 공격했다. 사실 이 공격 기술은 매우 흔한 방법이다.


Me

Coding Future, Decoding Society.