https://dreamhack.io/wargame/challenges/23/?writeup_id=6441
rev-basic-9
Reversing Basic Challenge #9 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출
dreamhack.io
거의 3시간은 쳐다본 것 같다.
크게 두 가지의 문제점이 있었다.
1. 역연산 과정에서 byte 크기를 간과해서 계속 오버플로우를 낸 것
2. 역연산 자체를 거의 청므 짜보다보니 제대로 작성을 못해서
결국 내가 쓴 코드인데도 못알아보는 지경까지 간 것...
전 문제에서 ROL를 정말 더럽게 짰는데, 이렇게 짜면 훨씬 좋다.
//String a, int b
return a << b & 0xff | a >> b;
그리고 int 값이 된 값들을 다시 char로 되돌릴 경우
항상 마지막에 &0xff를 붙여주어 오버플로우를 막자... 제발...
이것 때문에 1시간은 추가로 고민해야했다
'InfoSec > Reversing' 카테고리의 다른 글
rev_basic_7 - ROR, ROL (0) | 2022.08.01 |
---|---|
rev_basic_3 - dup 함수, xor, 역연산 (0) | 2022.08.01 |