본문으로 바로가기

pwnable.xyz / l33t-ness

category Wargame/pwnable.xyz 2020. 1. 13. 19:01

숫자로 장난치는 문제다. 포너블이라기보다는 리버싱 문제 같다..

 

  printf("x: ");
  read(0buf[0], 0x10uLL);
  printf("y: ");
  read(0buf[1], 0x10uLL);

  if ( strchr(buf[0], '-') || strchr(buf[1], '-') )
    return 0;

  x = atoi(buf[0]);
  y = atoi(buf[1]);

  if ( x <= 1336 && y <= 1336 )
    result = x - y == 1337;
  else
    result = 0;

  return result;

 

round_1

sub 문제와 똑같지만 음수 기호를 쓸 수 없다. x=1336, y=4294967295 를 사용하면 된다.

 

  _isoc99_scanf("%d %d", &x, &y);
  return x > 1 && y > 1337 && x * y == 1337;

 

round_2

두 수를 곱해서 1337을 만들어야 하며, 하나는 1보다 커야 하고 다른 하나는 1337보다 커야 한다.

2^32+1337=4294968633 는 integer overflow로 결과값이 1337이 되고, 소인수분해하면 3*3*12289*38833 이다. 범위 조건에 맞게 인수들을 잘 분배해서 나눠주면 된다.

 

  _isoc99_scanf("%d %d %d %d %d", &n[0], &n[1]);
  for ( i = 1i <= 4; ++i )
  {
    if ( n[i] < n[i - 1] )
      return 0LL;
  }
  return n[3] + n[2] + n[1] + n[0] + n[4] == n[3] * n[2] * n[1] * n[0] * n[4];

 

round_3

5개의 숫자를 입력받는다. 이 숫자들은 단조 증가하면서 5개를 전부 더한 값과 5개를 전부 곱한 값이 같아야 한다. 간단한 답으로는 5개의 0이 있다.

 

 

 

Last update: 10/23/2020

'Wargame > pwnable.xyz' 카테고리의 다른 글

pwnable.xyz / fspoo  (0) 2020.01.14
pwnable.xyz / Game  (0) 2020.01.13
pwnable.xyz / Jmp table  (0) 2020.01.13
pwnable.xyz / TLSv00  (0) 2020.01.13
pwnable.xyz / Free Spirit  (0) 2020.01.13