koding.log
로그인
koding.log
로그인
[시스템해킹] LOB - BOF 문제풀이
sheiskone
·
2022년 10월 4일
팔로우
0
시스템해킹
목록 보기
6/6
gate > gremlin
gremlin.c 코드를 보면 buffer에 256byte가 할당되어 있음을 알 수 있음. argv[1]이 256byte보다 크면 BOF가 발생할 것. strcpy 함수 때문.
공격 시나리오: 인자로 쉘코드를 전달해 buffer에 쉘코드 저장. 쉘코드가 위치한 주소, 즉 buffer의 시작 주소를 return address를 넣어주면 될 것 같음.
gdb로 buffer의 시작 주소를 알아내면 됨.
strcpy를 호출한 이후 상태를 확인할 것. b *main+59의 시점을 확인함. 메모리상태를 확인해보면, 버퍼의 시작 주소를 알 수 있음. 0xbffffa28.
쉘코드(25바이트)+NOP(235바이트)+버퍼시작주소(4바이트)를 입력하면 됨
gremlin > cobolt
쉘코드 저장할 수 있는 곳: 버퍼, 환경변수, ret 뒤의 공간, argv[1], argv[0](파일이름, 심볼릭 링크로 연결), 다른 segment 영역, 공유 라이브러리
버퍼의 크기가 16바이트로 줄어듦. 버퍼 이외의 곳(환경변수)에 쉘코드를 저장해 쉘코드 위치 주소를 return address에 넣어줄 것.
환경변수 주소 위치 이용하면 공격 성공.
sheiskone
팔로우
이전 포스트
[시스템해킹] Buffer OverFlow(BOF)
0개의 댓글
댓글 작성