sub 문제입니다.

https://pwnable.xyz 

 

pwnable.xyz

 

pwnable.xyz


IDA로 디스어셈블 한 코드를 먼저 보시죠

 

설명을 덧붙이면..?

 

__int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
  int v4; // [rsp+0h] [rbp-18h]
  int v5; // [rsp+4h] [rbp-14h]
  unsigned __int64 v6; // [rsp+8h] [rbp-10h]

  v6 = __readfsqword(0x28u);
  sub_A3E(a1, a2, a3);
  v4 = 0;
  v5 = 0;
  _printf_chk(1LL, "1337 input: ");
  _isoc99_scanf("%u %u", &v4, &v5); // scanf 받기 때문에 이거일거라 생각했는데...
  if ( v4 <= 4918 && v5 <= 4918 ) // 둘 다 4918을 넘기면 안됩니다.
  {
    if ( v4 - v5 == 4919 ) // 빼서 4919여야 합니다.
      system("cat /flag");
  }
  else
  {
    puts("Sowwy");
  }
  return 0LL;
}

딱 저 세줄밖에 없어요...

 

%u가 부호없는 10진수라는데... 

그냥 한번 넣어봤습니다.

 

..?

그냥 되네요..?

 

왜지?

 

하면서 제출도 해봤습니다.

 

ㅇㅁㅇ;;;

나왔습니다...

왜지?

 

왜지?

 

왜지?

 

scanf에서 자료형을 정해주는건 그렇게 받아야하기 때문인거 아니었나요?

 

찾아보니까... 어차피 두 변수는 정수형이라서 음수를 넣으면 음수로 표현이 된다고 하네요..?

 

흐으으음...

 

그냥 끝내기에는 뭔가 그러니까 어셈블리 코드나 보고 가겠습니다...

 

메인 함수의 주소를 찾았고?

 

이게 메인함수의 어셈블리입니다...

 

끄읕...

'Hacking-기초 > [PWN] Pwnable.xyz' 카테고리의 다른 글

[PWN] xor (50pts)  (0) 2020.08.01
[PWN] note (50pts)  (0) 2020.07.30
[PWN] misalignment (50pts)  (0) 2020.07.28
[PWN] add (50pts)  (0) 2020.07.28
[PWN] Welcome (50pts)  (0) 2020.07.28

+ Recent posts