Friday, January 18, 2019

스택기반 버퍼오버플로우_예외처리 핸들

Stack OverFlow
Exception Handling


Exception Handling

 ; 예외처리

  • 프로그램에서 에러가 발생했을 때, 에러를 핸들링하는 기능
  • 0으로 나누기(devided 0)

  • error처리의 경우


    • 실패했다

  • except처리의 경우

    • 어찌할바를 모름
    • 운영체제에서 예외가 발생했을 때 처리할 수 있는 기회를 줌
    • Exception Handling --> 처리과정에 따라 예외처리됨 --> Structured Exception Handling 구조화 예외처리(SEH)
    • SEH Handler
      • 처리코드


   실습     

소스코드에서 취약점을 발견하여
예외의 부분을 컨트롤해 결과값을 바꾸어보기

  • C++소스코드

[ While문, Sleep, printf, scanf 사용 ]


  • 메인함수 분석


[ printf 와 scanf 함수가 사용되는 주소 확인 ]


[ RETN값 ]
리턴의 주소와 함수가 어떤 식으로 입력되는지 확인

scanf %s 처리되어있어 abc=414243으로 입력됨 
= 아스키코드는 16진수로 바뀜
=> 16진수를 아스키코드로 입력해야함

scanf의 리턴값에 입력한 값(123abcd)확인
====>컨트롤 가능


[ scanf 입력값 + dummy+ Return값 순서 ]
4bytes + 4bytes + 주소(8bytes)



  • " Success!" 를 띄어보기


[ 리턴값에 Sleep부분의 CALL주소를 대입해보기 ]
리턴값에 Success의 While구문의 아무부분을 대입해도 됨
대신, 인자값에 주의하기


[ 리턴값에 넣어줄 Sleep함수의 CALL주소 ]
아스키코드표를 참고하여 뽑아내기
주소가 거꾸로 입력되는 점 주의!
0040101F->ctrl _ ctrl P @ ctrl @



  •  값입력해보기


함수값 + dummy + 주소
4bytes + 4bytes + 아스키코드
아무값(1234+5678) + ctrl _ ctrl P @ ctrl @



  •  우회코드입력후 분석


입력한 값 잘 들어감


리턴값도 잘 들어감


성공

2019-01-18

No comments:

Post a Comment

List

MobSF

MobSF는 오픈소스 모바일 앱 자동 보안 진단 프레임워크로 자동 분석 시스템 구축할 때 사용한다. 정정 및 동적 분석이 가능하며, Android, iOS, Windows에 대해 침투 테스트, 멀웨어 분석 및 보안 평가를 할 수 있다. 참고자료 필...