본문 바로가기
Security/Reversing-DreamHack

[DreamHack] simple-operation

by PhoB 2023. 9. 4.

기초적인 문제입니다(근데 푼사람은 적은...)

 

이 문제는 리눅스에서 pwndbg를 이용해서 풀어야 합니다.

실제 플래그도 리눅스를 써야 얻을 수 있고요

아 그리고 다운받은 후에

$ chmod +x [실행파일]

위 명령어로 실행권한을 주어야 제대로 실행 및 디버깅이 됩니다

pwndbg를 설치한 상태로 디버깅을 실행하면 위와 같이 디버깅이 실행되는것을 볼 수 있습니다.

일단 실행부터 시켜보겠습니다.

랜덤한 수가 생성이 되고 입력값을 받은뒤 결과값이 나오네요..

이제  main함수를 봐야겠습니다.

main의 일부분 입니다.

get_rand_num으로 난수를 생성하고 __isoc99_scanf@plt를 통해서 입력값을 받고 xor연산을 한 다음 main+341에서 strcmp@plt를 통해서 답과 비교하는 것 같습니다.

저는 일단 main+341에 중단점을 걸고 다시 실행을 시켜보도록 하겠습니다.

pwndbg> b *main+341
Breakpoint 1 at 0x555555555494
pwndbg> run

난수로 0xec1dc40f가 생성되었고 저는 1234를 입력했습니다 그 결과값으로 dd0cd1ce가 생성되었습니다.

s1,s2를 보면 result와 a0b4c1d7과 비교하는걸 보니 result가 a0b4c1d7이 나와야 하나 봅니다

그렇다면 Random number XOR Input = a0b4c1d7이 나와야 하는 것 같습니다.

그러면 Random number XOR a04c1d7 = input이 나오겠네요

근데 그전에 Random number XOR Input에 대해서 계산기를 돌려보면

dd0cd1ce가 아닌 ec1dc0dd가 나왔습니다. 뒤집혀있네요

그러면 똑같이 Random number XOR 7d1c4b0a= Input을 해주어야겠네요

그러면 답이 나옵니다.

진짜 플래그값을 얻으려면 nc를 사용해서 접속해야 합니다!

'Security > Reversing-DreamHack' 카테고리의 다른 글

[DreamHack] Long Sleep  (0) 2023.11.27
[DreamHack] Inject ME!!!  (0) 2023.09.11
[Dreamhack] rev-basic-2  (0) 2023.09.04