Write-up

[securitytraps.pl] Exploit/Riddles swapping writeup

ch4rli3kop 2019. 5. 1. 17:03
반응형

[securitytraps.pl] Exploit/Riddles swapping writeup

[summary] xor swap
C++ Trap #3
int main()
{
 unsigned int x = 0xB0FF14a5;
 unsigned int y = 0x7340c00e;
 
/*INPUT*/

 if(x==0x7340c00e && y==0xB0FF14a5) victory();
 return 0;
}

Your main objective is to call the victory function.
You must put one line of your code:
- Max 11 chars.
- You can't use: "main", "victory", "asm", "&", "*", "(", "/".
- You have only one semicolon.

x랑 y의 값을 서로 바꿔주면 된다. 다만 늘 하던대로 새로 변수를 만들어 할 수가 없기 때문에, 다른 swap 알고리즘이 있는지 찾아보았다.

XOR swap 알고리즘이 있더라. 다음과 같음

A = A ^ B;
B = A ^ B;
A = A ^ B;

결국 이런 방식이다.

A = A ^ A ^ B
B = A ^ B ^ B

위의 알고리즘을 어떻게 할당 연산자로 바꿔보니 사이즈가 딱 맞아 떨어진다. 아마 이걸 의도한 문제인 것 같다.

x^=y^=x^=y;


반응형