또 뭐하지
[기초] 리버싱 기초 문제 (Linux) 본문
728x90
int_reversing
- pwndbg
pwndbg를 실행하고info func
명령을 통해서 함수 목록을 확인했다.
disassemble main
명령을 통해서 main 함수의 어셈블리 코드를 확인했다.
코드를 살펴보면
- <+78>
cmp DWORD PTR [rbp-0xc],eax
:eax
값과rbp-0xc
값을 비교합니다. - <+65>
mov eax, 0x0
, <+70>call 0x10b0 <__isoc99_scanf@plt>
: 해당 부분에서 scanf 함수를 호출하고 eax가 인자로 사용된 것을 보아 우리가 찾는 값이 rbp-0xc 에 저장되어 있는 것을 알 수 있다. - <+27>
mov QWORD PTR [rbp-0xc], 0x146
: 이 부분에서 우리가 찾는 값이 0x146인 것을 확인할 수 있다. 0x146은 10진수로 326이다.
- IDA
IDA에서 int_reversing 파일을 실행시키고 F5 단축키를 통해 decomplie을 해준다.
그러면 위와 같이 원본 코드를 알 수 있다. 찾는 정수가 326인 것을 알 수 있다.
파일을 실행해서 확인해보면 맞는 것을 확인할 수 있다.
string_reversing
- pwndbg
pwndbg를 실행하고 info func 명령을 통해서 함수 목록을 확인했다.
disassemble main
명령을 통해서 main 함수의 어셈블리 코드를 확인했다.
코드를 살펴보면
- <+117>
call 0x10c0 <strcmp@plt>
: 이 부분에서 rsi와 rdi 값을 비교하는 것을 알 수 있다. 그 값은 각각 rbp-0x40과 rbp-0x20에서 불러져 온 것을 확인했다. - scanf 가 호출되어 있는 부분에서 사용된 인자를 확인해보면 rbp-0x20이다. 해당 값은 사용자 입력값인 것을 알 수 있고, 이제 찾는 값은 rbp-0x40에 저장된 것을 알 수 있다.
- <+47> 줄을 보면 rax 값이 rbp-0x40에 전달된 것을 알수 있고, 그 위에 rax와 rbx 찾는 값이 저장된 것을 볼 수 있다.
찾은 값을 hex을 char으로 변환해보았다. 순서가 이상한것을 확인하고 little endian으로 정렬됐다는 것을 알 수 있었다.
이것을 다시 정렬해보면 우리가 찾는 문자열이 "Hacked_By_ISly” 인 것을 알 수 있다.
파일을 실행하여 해당 문자열을 입력하면 맞는 것을 확인할 수 있다.
- IDA
IDA에서 string_reversing 파일을 실행시키고 F5 단축키를 통해 decomplie을 해준다.
그러면 위와 같이 원본 코드를 알 수 있다. 찾는 문자열이 "Hacked_By_ISly”인 것을 알 수 있다.
'I.sly() > 9기 기초 - 공통' 카테고리의 다른 글
[기초] I.Sly_bof (0) | 2024.05.17 |
---|---|
[기초] 포너블 개념 간략 정리 (0) | 2024.05.17 |
[기초] 리버싱 개념 간략 정리 (0) | 2024.05.09 |
[기초] 웹 해킹 개념 간략 정리 (0) | 2024.04.04 |
[기초] 웹 개념 간략 정리 (0) | 2024.03.28 |