'll Hacker
dreamhack wargame Easy Assembly 본문
Contents
728x90
문제 설명
어셈블리 언어에 대한 지식이 있으시다면 이 문제는 쉽게 해결할 수 있는 아주 간단한 문제입니다.
필요한 정보만을 찾아 플래그를 획득해주세요.
step1. main(or start)함수 분석
설명)
위에 if문은 별로 중요하지 않은 것 같음
strlen( ) 함수와 check_password( )를 분석해봐야될 것 같다. 그리고 enc_flag는 플래그가 암호화된 상태인가라고도 생각해봤다.
여기서 check_password를 잘 구현해야될 것 같다.
step2. main 내부 함수 분석
1) strlen 함수 호출
문자열 길이 계산 코드
2) check_password 함수
- 이 함수는 두 바이트 배열(a3과 a4)의 내용을 반복적으로 XOR 연산하고, 그 결과를 초기 값 a2에 누적하는 작업을 수행합니다.
- 루프는 a1이 0이 될 때까지 반복됩니다.
- 최종적으로 누적된 a2 값을 반환합니다.
이 함수는 일반적으로 패스워드 체크와 관련된 작업을 수행할 때 사용될 수 있으며, 두 배열의 내용을 기반으로 특정 값을 계산하여 반환하는 역할을 합니다.
step3. 역연산
enc_flag를 보면
.data:0804A000 enc_flag db 74h ; t ; DATA XREF: LOAD:0804807C↑o
.data:0804A000 ; _start+35↑o
.data:0804A001 db 78h ; x
.data:0804A002 db 4Bh ; K
.data:0804A003 db 65h ; e
.data:0804A004 db 77h ; w
.data:0804A005 db 48h ; H
.data:0804A006 db 5Ch ; \
.data:0804A007 db 69h ; i
.data:0804A008 db 68h ; h
.data:0804A009 db 7Eh ; ~
.data:0804A00A db 5Ch ; \
.data:0804A00B db 79h ; y
.data:0804A00C db 77h ; w
.data:0804A00D db 62h ; b
.data:0804A00E db 46h ; F
.data:0804A00F db 79h ; y
.data:0804A010 db 77h ; w
.data:0804A011 db 5
.data:0804A012 db 46h ; F
.data:0804A013 db 54h ; T
.data:0804A014 db 73h ; s
.data:0804A015 db 72h ; r
.data:0804A016 db 59h ; Y
.data:0804A017 db 69h ; i
.data:0804A018 db 68h ; h
.data:0804A019 db 7Eh ; ~
.data:0804A01A db 5Ch ; \
.data:0804A01B db 7Eh ; ~
.data:0804A01C db 5Ah ; Z
.data:0804A01D db 61h ; a
.data:0804A01E db 57h ; W
.data:0804A01F db 6Ah ; j
.data:0804A020 db 77h ; w
.data:0804A021 db 66h ; f
.data:0804A022 db 5Ah ; Z
.data:0804A023 db 52h ; R
.data:0804A024 db 2
.data:0804A025 db 62h ; b
.data:0804A026 db 5Ch ; \
.data:0804A027 db 79h ; y
.data:0804A028 db 77h ; w
.data:0804A029 db 5Ch ; \
.data:0804A02A db 0
.data:0804A02B db 7Ch ; |
.data:0804A02C db 57h ; W
.data:0804A02D db 0Dh
.data:0804A02E db 0Dh
.data:0804A02F db 4Dh ; M
.data:0804A030 db 0
이런식으로 나와있다.
XOR연산으로 통해 다시 복원하는 코드 구현해주자
구현했다면 아래 사진과 같이 플래그가 나오고
플래그는 base64로 암호화되어있어야함.
왜냐하면 복호화하면 Please do not base64 decode it. 이렇게 나옴ㅎㅎ
728x90
'Hacking > Reverse Engineering' 카테고리의 다른 글
dreamhack wargame : Simple Crack Me writeup (0) | 2024.07.10 |
---|---|
dreamhack : Collect Me writeup (1) | 2024.06.03 |
dreamhack : secure-mail writeup (2) | 2024.06.01 |
dreamhack : rev-basic-8 write-up (0) | 2024.06.01 |
dreamhack : rev-basic-6 writeup (1) | 2024.05.30 |