-
sub - pwnable.xyzWrite-ups/pwnable.xyz 2019. 10. 21. 02:45
Prob Info
Prob Info Checksec __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); if ( v4 <= 4918 && v5 <= 4918 ) { if ( v4 - v5 == 4919 ) system("cat /flag"); } else { puts("Sowwy"); } return 0LL; }
v4와 v5를 비교해 둘 다 4918보다 작고 두개를 빼서 4919가 나오면 플래그를 준다. 이런 문제는 어셈블리어로 다시 확인해야한다.
.text:00000000000008A1 mov eax, [rsp+18h+var_18] .text:00000000000008A4 cmp eax, 1336h .text:00000000000008A9 jg short loc_8B7 .text:00000000000008AB mov edx, [rsp+18h+var_14] .text:00000000000008AF cmp edx, 1336h .text:00000000000008B5 jle short loc_8C5
.text:00000000000008C5 loc_8C5: ; CODE XREF: main+65↑j .text:00000000000008C5 sub eax, edx .text:00000000000008C7 cmp eax, 1337h .text:00000000000008CC jnz short loc_8DA .text:00000000000008CE lea rdi, command ; "cat /flag" .text:00000000000008D5 call system
sub를 할 때 음수가 나와도 비교를 할 때는 의미가 없어진다. 반대로 두 값 모두 음수를 넣어도 된다.
'Write-ups > pwnable.xyz' 카테고리의 다른 글
note - pwnable.xyz (0) 2020.02.11 GrownUp - pwnable.xyz (0) 2020.02.11 misalignment - pwnable.xyz (0) 2020.02.11 add - pwnable.xyz (0) 2020.02.11 Welcome - pwnable.xyz (0) 2019.10.11