Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Kublet
- 액티브스캐닝
- OpenID Connect
- NMAP
- recon-ng
- Mac
- dnsenum
- SecurityMetric
- davtest
- decap
- 공격그래프
- 계정 탈취
- Social Network in Game
- 화이트해커
- 무선채널
- Mimikatz
- ip forwarding
- cgroups
- 패시브스캐닝
- AttackGraph
- 프로젝트
- 대학원
- airdecap-ng
- Container
- 넷크래프트
- 강의
- 보안
- OIDC
- Chrome 작업관리자
- Shift + ESC
Archives
- Today
- Total
네른
orw shellcode 본문
ORW shellcode?
- OPEN / READ / WRITE 세 함수를 사용하여 파일을 읽고 화면에 출력하는 쉘코드
- execve 등의 쉘코드가 사용 불가능 할 때, 파일을 읽는 작업 등을 위해 사용
- 원리는 다음과 같음
1) open 함수로 파일을 연다
2) 생성된 fd를 read 함수에 넘기고 읽은 후에 스택에 결과를 저장
3) 스택에서 정보를 읽어 stdout 등에 출력
각각의 syscall은 다음과 같이 구성됨
1. open
- rax : 0x02 (syscall_open)
- rdi : 읽을 파일명이 담긴 주소
- rsi : flag(read_only, write_only 등)
- rdx : mode(read 함수에서 mode는 의미가 없음)
2. read
- rax : 0x00 (syscall_read)
- rdi : 읽을 파일의 fd
- rsi : 읽은 결과를 저장할 buffer 주소
- rdx : 읽을 길이
3. write
- rax : 0x01 (syscall_write)
- rdi : 읽은 내용을 출력할 fd (stdout이면 0x1)
- rsi : 읽을 버퍼 주소
- rdx : 읽을 길이
asm코드는 다음과 같이 구성됨
1. open
mov rax, 읽을 파일명
push rax ---- 읽을 파일명을 스택에 저장
mov rdi, rsp ---- 읽을 파일명이 담긴 주소를 rdi에 저장
xor rsi, rsi ---- rsi 값을 0으로 설정하여 Read Only 모드 설정
xor rdx, rdx ---- mode를 0으로
mov rax, 2 ---- open syscall을 호출
syscall
2. read
mov rdi, rax ---- open의 return 값(fd)이 rax에 담기기 때문에 이를 옮김
mov rsi, rsp
sub rsi, 0x30 ---- rsp-0x30에 읽은 결과를 저장하기 위함
mov rdx, 0x30 ---- 읽을 길이는 0x30
mov rax, 0x0 ---- syscall read
syscall
3. write
mov rdi, 1 ---- stdout에 출력
mov rax, 0x1 ---- syscall_write
syscall
rsi rdx를 수정하지 않는 것은 read 단계에서 대입해둔 값을 그대로 쓰기 때문
위의 1,2,3 asm 코드를 순차적으로 진행하면 특정 파일을 읽어 stdout에 출력하게 됨
'강의 정리 > 드림핵 정리' 카테고리의 다른 글
Stack Buffer Overflow (0) | 2022.02.15 |
---|---|
Calling Convention (0) | 2022.02.15 |
pwntools API 정리 (0) | 2022.02.11 |
2. FSB - Format String Bug / Double Free / Use After Free (0) | 2021.02.24 |
1. BOF - Buffer OverFlow / OOB - Out Of Boundary / Off-by-one (0) | 2021.02.23 |
Comments