I know you really want the flag, so I’ll print it out for you, but only after January 1st, 2024 :)
nc byuctf.xyz 40007
tag: easy
- [215 solves / 100 points]
Analysis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| __isoc99_scanf("%10s", nptr); v6 = atoi(nptr); if ( (unsigned int)v6 > 1704067199 ) { timer = v6; v4 = ctime(&timer); printf("\nSpecified datetime - %s\n", v4); v8 = time(0LL); v5 = ctime(&v8); printf("Current datetime - %s\n", v5); if ( timer >= v8 ) { puts("'print_flag' was not run because specified date has not occurred yet. Exiting..."); } else { puts("Time requirement has been met. Running 'print_flag'..."); print_flag(); } return 0; }
|
사실 자세히 안보고 바로 풀었다. 입력값이 1704067199보다 크면 if문에 들어가길래 먼저 이걸 목표로 저거보다 큰 수를 주었다. 그랬더니 운 좋게도 print_flag
함수가 실행되었다. ㅎ
참고로 time함수에 널값을 넣게 되면 1970년 1월 1일 0시 이후부터 현제까지의 시간이 초로 변환된 값이 반환된다.
Solve
1 2 3 4 5 6 7 8
| from pwn import *
p = process('./2038') e = ELF('./2038')
p.sendlineafter('> ', str(21704067199))
p.interactive()
|