오유인페이지
개인차단 상태
프로그래머님의 개인페이지입니다
회원가입 : 07-05-23
방문횟수 : 549회
닉네임 변경이력
일반
베스트
베오베
댓글
617 2018-10-12 22:49:00 2
다이아몬드 진짜 가짜 구별법.jpg [새창]
2018/10/12 04:18:27
이게 그 보석상이 100만원 손해 인가 하는 문제인가요?
616 2018-06-07 20:55:14 5
심심풀이로 볼만한 움짤들 모음 100.GIF [새창]
2018/06/07 18:34:12
아재요 100회 고마워요~ :D
615 2018-06-05 19:31:59 1
[새창]
잘 놀다 갑니다 :)
614 2018-01-23 17:56:18 87
무도 정현편 대본.jpg [새창]
2018/01/23 17:35:06
ㅋㅋㅋㅋㅋㅋㅋㅋ아니 ㅋㅋ 이정도면 대본 유출급 아니에요?ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
613 2017-12-21 01:50:24 0
프게 (프로그래머게시판) 은 왜 가만 있나요? [새창]
2017/12/20 22:00:25
딱히 이번 사태가 아니더라도... 항상 조용한 지역이라...
612 2017-08-25 08:35:27 0
몸켐구제좀 부탁드립니다... [새창]
2017/08/23 12:57:46
댓글 올렷다가 지웁니다. 네이버 엔드라이브 같은곳에 apk 올린다음에 공유 해서 댓글로 링크 남겨 주세요
610 2017-07-12 12:37:08 2
vi 에디터 연습은 어떻게 해야 할까요? [새창]
2017/07/12 11:34:11
+1
609 2017-07-03 19:32:40 0
스택에서 표시한 두 부분은 뭐가 들어있는 건가요? [새창]
2017/07/01 00:39:56
하시다 보면 나중에는 _start -> __libc_start_main -> main 이렇게 따라가면서 실제로 프로그램 처음부터 main 까지 분석도 해보실텐데요. 그때 되면 저 더미 바이트가 그 전에 어떻게 사용되었는지도 알 수 있습니다 ㅎㅎ
608 2017-07-02 20:13:38 0
스택에서 표시한 두 부분은 뭐가 들어있는 건가요? [새창]
2017/07/01 00:39:56
추가적으로 Main의 프롤로그에서 저런 더미는 환경 변수 등등에 따라 스택이 변하기 때문에 메인의 프롤로그 진입시의 esp 에 따라 한 바이트도 더미가 안생길 수도 있고 최대 12바이트 까지 더미가 생길 수 있습니다.
607 2017-07-02 20:11:54 0
스택에서 표시한 두 부분은 뭐가 들어있는 건가요? [새창]
2017/07/01 00:39:56
어셈 프롤로그 시 중간에 생기는 빈 바이트들는 더미 코드라고 생각하시면 됩니다.

일반적으로 저런 더미가 생기는 이유는 Default 컴파일 시, 스택을 정렬 (Align)을 하기 위해 함수의 프롤로그에 다음과 같은 부분이 들어 가게 됩니다.

and esp,0xfffffff0

이 뜻은 스택 프레임을 16바이트로 정렬을 하라는 의미 입니다.

예를들어 프롤로그 들어 갈때 마지막 한 바이트가 0x5c 와 같이 끝나게 되면 저 어셈 코드를 거친뒤 0x50 처럼 되게 되고 이럴 경우 12바이트 (0xc)만큼의 ebp와 esp사이에 더미 바이트가 생기게 됩니다.

현재 ssp가 없는 상황이기 때문에 저기 들어간 더미 바이트들 값의 의미는 main이 호출되기전 다른 함수들에 의해 스택에 씌여진 값이라서 무시하셔도 되지만 이러한 이유 때문에 소스코드에서 봣을때 이론적으로 x 바이트 값만 가지고 ret 을 덮을수 있는 상황에서도 해보면 더미 바이트 때문에 잘 덮히지 않게 됩니다. 따라서, 정확히 오버플로우를 하기 위해서는 글쓴이님처럼 직접 디버깅을 해서 정확한 바이트 값을 구하시는게 제일 정확합니다 ㅎㅎ

추가적으로 이러한 더미를 없애기 위해서 아래와 같이 스택 바운더리를 컴파일 옵션으로 정해주시면 됩니다.

-mpreferred-stack-boundary=2
(64 비트 인 경우 최소 4)
606 2017-06-30 17:41:36 2
[새창]
그래픽 처리 관련해서 많이 쓰는 수학적인 연산이 있는데 이는 일반적인 CPU 에서 많은 양의 연산을 실행해야 할 것이 GPU 는 더 빠르게 실행을 해줍니다.

머신 러닝에서 쓰는 연산이 이러한 수학적 연산을 사용하기 때문에 CPU보단 GPU를 사용하는게 더 효율적입니다~
605 2017-06-12 09:37:55 0
스택 버퍼 오버플로우...쉘이 실행이 안 되는데 어디가 문제일까요...? [새창]
2017/06/11 03:48:58
익스 코드의 마지막 4바이트는 환경 마다 다르기 때문에 컴파일 후 한번 실행 하셔서 buf 주소를 확인한다음에 해당 주소로 변경해주세요.
604 2017-06-12 09:36:56 0
스택 버퍼 오버플로우...쉘이 실행이 안 되는데 어디가 문제일까요...? [새창]
2017/06/11 03:48:58
그냥 컴파일 하시면 어셈블리에서 마지막 리턴 주소를 복원 하는 코드가 생기게 됩니다.

이를 제거 하기 위해 컴파일 시, -mpreferred-stack-boundary=2 를 넣어주세요.
(저는 64비트 환경에서 컴파일 했기 때문에 32비트 elf를 만드려고 -m32 옵션을 넣었습니다.)

$ gcc -m32 -fno-stack-protector -mpreferred-stack-boundary=2 -z execstack test.c
$ ./a.out `python -c 'print "x33xd2x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1xb0x0bxcdx80" + "A"*76 + "A"*8 + "xa0xd5xffxff"'`

이렇게 되면 a.out 이 setuid 가 걸린 경우 해당 아이디로 쉘이 떨어 지게 됩니다.

중간에 A*8을 한 이유는 스택 바운더리를 설정한 경우, 버퍼와 리턴 위치의 차이가 8바이트가 되기 때문에 8로 설정했습니다.
603 2017-05-30 10:02:04 1
추리 연산 문제 [새창]
2017/05/30 09:24:26
음 형태를 보니깐 최대공약수(gcd) 인것 같은데요 'ㅅ'
< 이전페이지 다음페이지 >
< 6 7 8 9 10 >
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호