write up/ShaktiCTF 2021
ShaktiCTF 2021 - hack
heegong
2021. 4. 5. 09:33
728x90

문제
int __cdecl main(int argc, const char **argv, const char **envp)
{
int v4; // [rsp+8h] [rbp-28h]
int i; // [rsp+Ch] [rbp-24h]
char s[24]; // [rsp+10h] [rbp-20h] BYREF
unsigned __int64 v7; // [rsp+28h] [rbp-8h]
v7 = __readfsqword(0x28u);
printf("Enter the string: ");
__isoc99_scanf("%s", s);
v4 = 1;
if ( strlen(s) != 16 )
{
puts("I dont think so XD");
exit(0);
}
for ( i = 0; s[i]; ++i )
{
if ( s[i] != (unsigned __int8)v2[i + 3] )
{
puts("Nope");
exit(0);
}
++v4;
}
if ( v4 == 17 )
printf("Your Flag: shaktictf{%s}\n", s);
return 0;
}
메인 함수
.data:0000000000201020 v2 dd 59h, 33h, 73h, 2 dup(5Fh), 48h, 34h, 63h, 4Bh, 5Fh
.data:0000000000201020 ; DATA XREF: main+92↑o
.data:0000000000201020 dd 74h, 48h, 33h, 5Fh, 4Dh, 2 dup(30h), 6Eh, 2 dup(5Fh)
.data:0000000000201020 dd 2 dup(21h), 5Fh, 48h, 6 dup(0)
v2
by = "59 00 00 00 33 00 00 00 73 00 00 00 5F 00 00 00 5F 00 00 00 48 00 00 00 34 00 00 00 63 00 00 00 4B 00 00 00 5F 00 00 00 74 00 00 00 48 00 00 00 33 00 00 00 5F 00 00 00 4D 00 00 00 30 00 00 00 30 00 00 00 6E 00 00 00 5F 00 00 00 5F 00 00 00 21 00 00 00 21 00 00 00 5F 00 00 00 48"
by = bytes.fromhex(by)
flag = ''
for i in by:
if i!=0:
flag+=chr(i)
flag = flag[3:3+16]
print("shaktictf{%s}"%flag)
간단하게 풀 수 있다.
플래그 : shaktictf{__H4cK_tH3_M00n_}