[System Hacking] Quiz: x86 Assembly 2

2024. 1. 12. 18:47·보안/드림핵

드림핵 시스템 해킹 강의를 보다,

중간 퀴즈가 나와 문제 풀이를 정리하고자 한다.

 

문제

Q1. end로 점프하면 프로그램이 종료된다고 가정하자.
프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 어느 문자열이 나오는가?
[Register]
rcx = 0
rdx = 0
rsi = 0x400000
=======================
[Memory]
0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10
0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d
0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c
0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00
=======================
[code]
1: mov dl, BYTE PTR[rsi+rcx]
2: xor dl, 0x30
3: mov BYTE PTR[rsi+rcx], dl
4: inc rcx
5: cmp rcx, 0x19
6: jg end
7: jmp 1

 


문제 접근

일단 code를 따라가보면서 이해해보자 !

 

# code
1: mov dl, BYTE PTR[rsi+rcx]

- rsi + rcx ->  0x400000로 시작

 

- dl -> 0x400000위치에 있는 0x67

 

 

# code
2: xor dl, 0x30

- dl = 0x67

 

-> 0x67 XOR 0x30 = 0x57

 

# code
3: mov BYTE PTR[rsi+rcx], dl

- dl에 0x57 저장 

 

 

# code
4: inc rcx

- rcx값 1 증가: 0 -> 1

 

 

# code
5: cmp rcx, 0x19
6: jg end

- (rcx 값 = 0x1)과 0x19 비교하고, 왼쪽이 더 크면 end로 이동

    -> 왼쪽이 작으므로 6번 줄 실행 x

 

 

# code
7: jmp 1

- code의 1번 줄로 이동

 

 

정리

- 1 ~ 4번 라인을 19번 (0에서 19) 반복하는 코드이다

- (메모리의 0x400000 부터 0x400019까지의 각 값) XOR 0x30

 


해결

0x67 XOR 0x30 = 0x57 (W)
0x55 XOR 0x30 = 0x65 (e)
0x5c XOR 0x30 = 0x6c (l)
0x53 XOR 0x30 = 0x63 (c)
0x5f XOR 0x30 = 0x6f (o)
0x5d XOR 0x30 = 0x6d (m)
0x55 XOR 0x30 = 0x65 (e)
0x10 XOR 0x30 = 0x20 ( )
0x44 XOR 0x30 = 0x74 (t)
0x5f XOR 0x30 = 0x6f (o)
0x10 XOR 0x30 = 0x20 ( )
0x51 XOR 0x30 = 0x61 (a)
0x43 XOR 0x30 = 0x73 (s)
0x43 XOR 0x30 = 0x73 (s)
0x55 XOR 0x30 = 0x65 (e)
0x5d XOR 0x30 = 0x6d (m)
0x52 XOR 0x30 = 0x62 (b)
0x5c XOR 0x30 = 0x6c (l)
0x49 XOR 0x30 = 0x79 (y)
0x10 XOR 0x30 = 0x20 ( )
0x47 XOR 0x30 = 0x77 (w)
0x5f XOR 0x30 = 0x6f (o)
0x42 XOR 0x30 = 0x72 (r)
0x5c XOR 0x30 = 0x6c (l)
0x54 XOR 0x30 = 0x64 (d)
0x11 XOR 0x30 = 0x21 (!)

 

Welcome to assembly world!

 

'보안 > 드림핵' 카테고리의 다른 글

[System Hacking] Quiz: x86 Assembly 3  (1) 2024.01.13
'보안/드림핵' 카테고리의 다른 글
  • [System Hacking] Quiz: x86 Assembly 3
KyuminKim
KyuminKim
컴퓨터공학과 학생의 이모저모 개발 일지 📝
  • KyuminKim
    이모저모
    KyuminKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 프로젝트 (2)
        • first-blog (2)
      • 클라우드 (22)
        • 도커 (14)
        • 쿠버네티스 (5)
        • AWS (2)
      • 알고리즘 (5)
        • 코드트리 (0)
        • 프로그래머스 (5)
      • 백엔드 (8)
      • 프론트엔드 (2)
      • 보안 (3)
        • 드림핵 (2)
      • python (3)
      • 네트워크 (1)
      • 기타 (6)
        • 2025 프로펙트 부트캠프(1차) | 클라우드 엔.. (0)
        • OSSCA | 2024 오픈소스 컨트리뷰션 아카데.. (0)
        • WIK (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    주간레포트
    탈퇴구현
    자료구조
    urf8
    recover_your_data
    코드트리
    쿠버네티스
    EC2
    코드트리조별과제
    코딩테스트
    amazonlinux
    DB
    MySQL
    고랭
    알고리즘
    티스토리챌린지
    코딩트리조별과제
    cannot send an empty message
    오블완
    도커
    characterencoding
    파이썬
    인코딩
    DP
    2024 당근 테크 밋업
    docker
    진단평가
    character_set_server
    도커파일
    apiserver-runtime
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
KyuminKim
[System Hacking] Quiz: x86 Assembly 2
상단으로

티스토리툴바