본문 바로가기

BASIC2

[Dreamhack] rev-basic-2 이전의 rev-basic문제와 계속 비슷한 유형입니다. 우선 Input하는 지점을 찾고 문자열을 입력값을 비교하는 함수를 찾아야 합니다. 문자열 탐색을 통해서 Input을 찾아 이동합니다. 밑에 중단점을 찍어 둔 곳이 입력값을 처리하는 함수입니다. 대략 이렇게 생겼습니다. cmp rax,12 jae chall2.7FF693C51048 movsxd rax,dword ptr ss:[rsp] lea rcx,qword ptr ds:[7FF693C53000] movsxd rdx,dword ptr ss:[rsp] mov r8,qword ptr ss:[rsp+20] movzx edx,byte ptr ds:[r8+rdx] cmp dword ptr ds:[rcx+rax*4],edx 반복문입니다. cmp rax,12 ->.. 2023. 9. 4.
[DreamHack] simple-operation 기초적인 문제입니다(근데 푼사람은 적은...) 이 문제는 리눅스에서 pwndbg를 이용해서 풀어야 합니다. 실제 플래그도 리눅스를 써야 얻을 수 있고요 아 그리고 다운받은 후에 $ chmod +x [실행파일] 위 명령어로 실행권한을 주어야 제대로 실행 및 디버깅이 됩니다 pwndbg를 설치한 상태로 디버깅을 실행하면 위와 같이 디버깅이 실행되는것을 볼 수 있습니다. 일단 실행부터 시켜보겠습니다. 랜덤한 수가 생성이 되고 입력값을 받은뒤 결과값이 나오네요.. 이제 main함수를 봐야겠습니다. main의 일부분 입니다. get_rand_num으로 난수를 생성하고 __isoc99_scanf@plt를 통해서 입력값을 받고 xor연산을 한 다음 main+341에서 strcmp@plt를 통해서 답과 비교하는 것 같.. 2023. 9. 4.