그냥 IDA로 풀겠다.sub_140001000에 입력한 v4를 넣는다. 아마 값을 확인하는 함수인 것 같다.Correct를 출력하도록 값을 맞춰야 한다.wowflag : Compar3_the_stri1ng
이전 문제와 마찬가지로 입력받은 v4를 sub_140001000으로 넘긴다.입력받은 값을 a1으로 넘기는데 각 원소의 값이 저 아스키코드 값이면 되겠다.그럼 해결된다.
0x12, 즉 18바이트가 들어가야 하나 보다.내가 입력한 i번째 글자랑 aC4 \* i 글자랑 같아야 하겠다.이렇게 배열 안의 값들이 보이게 되는데 이렇게 확인 가능하다.
140001000을 분석해보자.어우 복잡하다. xor이 우선순위가 가장 낮다. 즉 내가 입력한 i번째 문자에 2i를 더하고 i를 xor한 값이 byte_140003000i여야 한다.$$byte_140003000i == (i \\oplus (a1i+2i))\\i\\opl
음 ... 엄........ 그냥 우선순위 적당히 정리해주고 해결해주면 되겠다. \[우선순위 정리]https://dojang.io/mod/page/view.php?id=188편의상 a1 -> arraybyte_140003000 -> byte_array$$(\_
i 번째 원소와 다음 원소의 합이 배열의 i번째 값이면 되나보다. 근데 24번째 원소는 0이다. 엄청난 힌트이다.$$arri + arri+1 = bytei$$여기서 마지막 byte 배열의 값이 0이다. 그러므로 우리가 입력할 마지막 값은 76이다.
...? byte 배열이 두개이고, 우리가 입력한 값을 인덱스로 찾는다. 그래서 두 원소의 값이 같아야 한다. 브루토포싱 문제인 듯 하다.
어우 ROL이 나온다. 식 정리해서 문제 해결해보도록 하자.$$i \\ |\\ ROL(ai, i \\& 7) = bytei\\ROL(ai, i\\& 7) = bytei \\ |\\ i\\ai = ROR(bytei \\ |\\ i, i\\&7)$$어 됐다.저 ROR
어우 이건 뭘까.... -5를 곱하기는 하는데 unsigned int 형태로 가져오므로 0xFB를 곱한다고 생각하면 될까 ?그냥 브루트 포싱으로 풀었다 .... 플래그가 어질어질하다 ㅎㅎ참고로 251을 곱하는 건 4바이트 형태이므로 꼭 꼭 type casting을 해
음... 먼저 a1의 길이를 v3에 받는다. v3+1은 8로 나누어지면 안된다.이걸 통과하면 10A0 함수에 a1의 8배수 원소들만 인자로 넘겨준다.memcmp도 하므로 10A0 함수 내에서 a1 배열의 값들을 바꾼 다는 것을 예측해볼 수 있다.이 함수에 들어온 값들에
그래픽 문제를 많이 접해보지는 못해서 좀 힘들긴 했다. 저 가리는 모션을 패치하자.뭐가 많이 복잡하긴 하다.RegisterClassExW(&v11); 이 부분을 보자. 콜백함수이ㅏㄷ.v11을 분석해보자 ...?v11.lpfnWndProc = (WNDPROC)sub_14
html 파일이 너무 기므로 코드를 첨부하진 않겠다. 웹 리버싱 문제이다. click 하게 되면 \_0x9a220(pass.value)를 실행하게 된다. \_0x9a220 함수를 분석해보자. 이걸 분석할 수 있을까? 절대 분석 못하지만, 이 부분을 보면 뭔가 틀리면 W
DLL 엔트리 포인트이다. sub_1800015F0을 실행한다.v8 부분을 보면 sub_180001390을 호출한다.MessageBox를 통해 flag를 출력해주고 있다. flag는 복잡한 연산과정에 의해 설정되므로 저 flag를 어떻게 출력할 수 있는지 확인해봐야겠다