일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- lob
- c++
- XSS Game
- CSS
- 기계학습
- 파이썬
- SWEA
- hackerrank
- siss
- C언어
- PHP 웹페이지 만들기
- BOJ Python
- hackctf
- Python
- c
- HTML
- BOJ
- 생활코딩
- 드림핵
- 웹페이지 만들기
- 숙명여자대학교 정보보안동아리
- 숙명여자대학교 정보보안 동아리
- 풀이
- WarGame
- 머신러닝
- Javascript
- 자료구조 복습
- 백준
- The Loard of BOF
- Sookmyung Information Security Study
- Today
- Total
목록2021 SISS 21기 활동/1학기 시스템 (11)
혜랑's STORY
# checksec을 통해 보호기법 및 파일 유형 체크하기 확인해 본 결과 ret2sc는 32 bit 파일이고, 보호기법이 없다. 따라서 앞서 정리한 Return to Shellcode를 사용해 프로그램의 흐름을 변경할 수 있을 것 같다. # IDA를 통해 Pseudo code 확인하기 read(0, &name, 0x32u) : read 함수로 사용자로부터 50 바이트를 입력받는다. gets(&s) : gets() 함수로 s변수에 입력받은 문자열을 저장 -> 길이에 제한 없음. 버퍼오버플로우 취약점 발생 -> name 변수에 shellcode를 저장하고 gets 함수로 payload를 전달해 return address에 name의 주소를 저장하면 RET 명령어로 해당 주소로 리턴하여 쉘코드를 실행할 수 ..
#Return to Shellcode Return to Shellcode란 Return address 영역에 Shellcode가 저장된 주소로 변경해, Shellcode를 호출하는 방식이다. CALL & RET instruction CALL 명령어는 Return address(CALL 명령어 다음 명령어의 위치(주소값))를 Stack에 저장하고, 피연산자 주소로 이동한다. RET 명령어는 POP 명령어를 이용해 RSP 레지스터가 가리키는 Stack영역에 저장된 값을 RIP(EIP)에 저장 후, 해당 주소로 이동한다. -> Stack 영역에 저장된 Return address 값을 변경할 수 있다면 프로그램의 흐름을 변경할 수 있다. 1. Proof of concept 코드를 통해 CALL, RET 명령어에..
# IDA Pro 7.0 사용법 1) Pseudo Code 보기 - F5, 특정 함수 이름 더블클릭 2) 디스어셈블 상태, 디버깅 상태에서 특정 어셈블리어 코드를 고치고 싶을 때 - 고칠 부분 클릭하고 Alt + F2 - Menu: edit -> other -> manual instruction -> 바꾸고 싶은 어셈블리어 구문 넣고 ok (프로그램 파일이 수정되는 것이 아니라 분석 화면에서만 바뀐다.) 3) Text View 화면과 Layout Graph 화면으로 전환 - IDA View 화면에서 Spacebar - Graph Overview 기능으로 각 함수들의 관계와 분기점들을 Graph 화면으로 보여준다. 4) Open 한 파일 정보 보기 - IDA View 화면에서 스크롤을 맨 위로 올린다. -..