Dreamhack/Dreamhack Wargame (Challenge)

[141] IT 비전공자 [dreamhack]datestring문제 풀기

imaginefuture-1 2025. 1. 29. 19:50

타임이즈 골드...시간은 금이지..하지만 쉘은..? 다이아몬드라구요~

 

 

날짜를 입력했더니, 그냥 포맷 보여주고 끝..뭐여?
보호기법

Temporary breakpoint 1 at 0x13af

Temporary breakpoint 1, 0x00005555555553af in main ()
LEGEND: STACK | HEAP | CODE | DATA | WX | RODATA
─────────────[ REGISTERS / show-flags off / show-compact-regs off ]─────────────
 RAX  0x5555555553a7 (main) ◂— endbr64 
 RBX  0
 RCX  0x555555557d98 (__do_global_dtors_aux_fini_array_entry) —▸ 0x5555555551a0 (__do_global_dtors_aux) ◂— endbr64 
 RDX  0x7fffffffdf48 —▸ 0x7fffffffe2e5 ◂— 'SHELL=/bin/bash'
 RDI  1
 RSI  0x7fffffffdf38 —▸ 0x7fffffffe2b9 ◂— '/home/happy/Downloads/datestring/datestring'
 R8   0x7ffff7e1bf10 (initial+16) ◂— 4
 R9   0x7ffff7fc9040 (_dl_fini) ◂— endbr64 
 R10  0x7ffff7fc3908 ◂— 0xd00120000000e
 R11  0x7ffff7fde660 (_dl_audit_preinit) ◂— endbr64 
 R12  0x7fffffffdf38 —▸ 0x7fffffffe2b9 ◂— '/home/happy/Downloads/datestring/datestring'
 R13  0x5555555553a7 (main) ◂— endbr64 
 R14  0x555555557d98 (__do_global_dtors_aux_fini_array_entry) —▸ 0x5555555551a0 (__do_global_dtors_aux) ◂— endbr64 
 R15  0x7ffff7ffd040 (_rtld_global) —▸ 0x7ffff7ffe2e0 —▸ 0x555555554000 ◂— 0x10102464c457f
 RBP  0x7fffffffde20 ◂— 1
 RSP  0x7fffffffde20 ◂— 1
 RIP  0x5555555553af (main+8) ◂— sub rsp, 0x90
──────────────────────[ DISASM / x86-64 / set emulate on ]──────────────────────
 ► 0x5555555553af <main+8>     sub    rsp, 0x90                       RSP => 0x7fffffffdd90 (0x7fffffffde20 - 0x90)
   0x5555555553b6 <main+15>    mov    dword ptr [rbp - 0x84], edi     [0x7fffffffdd9c] <= 1
   0x5555555553bc <main+21>    mov    qword ptr [rbp - 0x90], rsi     [0x7fffffffdd90] <= 0x7fffffffdf38 —▸ 0x7fffffffe2b9 ◂— '/home/happy/Downloads/datestring/datestring'
   0x5555555553c3 <main+28>    mov    dword ptr [rbp - 4], 0          [0x7fffffffde1c] <= 0
   0x5555555553ca <main+35>    call   setup                       <setup>
 
   0x5555555553cf <main+40>    lea    rax, [rip + 0xc59]              RAX => 0x55555555602f ◂— 'Calendar v0.1'
   0x5555555553d6 <main+47>    mov    rdi, rax
   0x5555555553d9 <main+50>    call   puts@plt                    <puts@plt>
 
   0x5555555553de <main+55>    lea    rax, [rip + 0xc58]              RAX => 0x55555555603d ◂— 0x2500203a72616559 /* 'Year: ' */
   0x5555555553e5 <main+62>    mov    rdi, rax
   0x5555555553e8 <main+65>    mov    eax, 0                          EAX => 0
───────────────────────────────────[ STACK ]────────────────────────────────────
00:0000│ rbp rsp 0x7fffffffde20 ◂— 1
01:0008│+008     0x7fffffffde28 —▸ 0x7ffff7c29d90 (__libc_start_call_main+128) ◂— mov edi, eax
02:0010│+010     0x7fffffffde30 ◂— 0
03:0018│+018     0x7fffffffde38 —▸ 0x5555555553a7 (main) ◂— endbr64 
04:0020│+020     0x7fffffffde40 ◂— 0x1ffffdf20
05:0028│+028     0x7fffffffde48 —▸ 0x7fffffffdf38 —▸ 0x7fffffffe2b9 ◂— '/home/happy/Downloads/datestring/datestring'
06:0030│+030     0x7fffffffde50 ◂— 0
07:0038│+038     0x7fffffffde58 ◂— 0x6b2b69a559e13488
─────────────────────────────────[ BACKTRACE ]──────────────────────────────────
 ► 0   0x5555555553af main+8
   1   0x7ffff7c29d90 __libc_start_call_main+128
   2   0x7ffff7c29e40 __libc_start_main+128
   3   0x555555555125 _start+37
────────────────────────────────────────────────────────────
Dump of assembler code for function main:
   0x00005555555553a7 <+0>:	endbr64 
   0x00005555555553ab <+4>:	push   rbp
   0x00005555555553ac <+5>:	mov    rbp,rsp
   0x00005555555553af <+8>:	sub    rsp,0x90
   0x00005555555553b6 <+15>:	mov    DWORD PTR [rbp-0x84],edi
   0x00005555555553bc <+21>:	mov    QWORD PTR [rbp-0x90],rsi
   0x00005555555553c3 <+28>:	mov    DWORD PTR [rbp-0x4],0x0
   0x00005555555553ca <+35>:	call   0x5555555551e9 <setup>
   0x00005555555553cf <+40>:	lea    rax,[rip+0xc59]        # 0x55555555602f
   0x00005555555553d6 <+47>:	mov    rdi,rax
   0x00005555555553d9 <+50>:	call   0x5555555550a0 <puts@plt>
   0x00005555555553de <+55>:	lea    rax,[rip+0xc58]        # 0x55555555603d
   0x00005555555553e5 <+62>:	mov    rdi,rax
   0x00005555555553e8 <+65>:	mov    eax,0x0
   0x00005555555553ed <+70>:	call   0x5555555550b0 <printf@plt>
   0x00005555555553f2 <+75>:	lea    rax,[rbp-0x6c]
   0x00005555555553f6 <+79>:	mov    rsi,rax
   0x00005555555553f9 <+82>:	lea    rax,[rip+0xc44]        # 0x555555556044
   0x0000555555555400 <+89>:	mov    rdi,rax
   0x0000555555555403 <+92>:	mov    eax,0x0
   0x0000555555555408 <+97>:	call   0x5555555550e0 <__isoc99_scanf@plt>
   0x000055555555540d <+102>:	mov    eax,DWORD PTR [rbp-0x6c]
   0x0000555555555410 <+105>:	sub    eax,0x76c
   0x0000555555555415 <+110>:	mov    DWORD PTR [rbp-0x4c],eax
   0x0000555555555418 <+113>:	lea    rax,[rip+0xc28]        # 0x555555556047
   0x000055555555541f <+120>:	mov    rdi,rax
   0x0000555555555422 <+123>:	mov    eax,0x0
   0x0000555555555427 <+128>:	call   0x5555555550b0 <printf@plt>
   0x000055555555542c <+133>:	lea    rax,[rbp-0x68]
   0x0000555555555430 <+137>:	mov    rsi,rax
   0x0000555555555433 <+140>:	lea    rax,[rip+0xc0a]        # 0x555555556044
   0x000055555555543a <+147>:	mov    rdi,rax
   0x000055555555543d <+150>:	mov    eax,0x0
   0x0000555555555442 <+155>:	call   0x5555555550e0 <__isoc99_scanf@plt>
   0x0000555555555447 <+160>:	mov    eax,DWORD PTR [rbp-0x68]
   0x000055555555544a <+163>:	lea    ecx,[rax-0x1]
   0x000055555555544d <+166>:	movsxd rax,ecx
   0x0000555555555450 <+169>:	imul   rax,rax,0x2aaaaaab
   0x0000555555555457 <+176>:	shr    rax,0x20
   0x000055555555545b <+180>:	sar    eax,1
   0x000055555555545d <+182>:	mov    esi,ecx
   0x000055555555545f <+184>:	sar    esi,0x1f
   0x0000555555555462 <+187>:	sub    eax,esi
   0x0000555555555464 <+189>:	mov    edx,eax
   0x0000555555555466 <+191>:	mov    eax,edx
   0x0000555555555468 <+193>:	add    eax,eax
   0x000055555555546a <+195>:	add    eax,edx
   0x000055555555546c <+197>:	shl    eax,0x2
   0x000055555555546f <+200>:	sub    ecx,eax
   0x0000555555555471 <+202>:	mov    edx,ecx
   0x0000555555555473 <+204>:	mov    DWORD PTR [rbp-0x68],edx
   0x0000555555555476 <+207>:	mov    eax,DWORD PTR [rbp-0x68]
   0x0000555555555479 <+210>:	mov    DWORD PTR [rbp-0x50],eax
   0x000055555555547c <+213>:	mov    eax,DWORD PTR [rbp-0x68]
   0x000055555555547f <+216>:	add    eax,0x1
   0x0000555555555482 <+219>:	mov    DWORD PTR [rbp-0x68],eax
   0x0000555555555485 <+222>:	lea    rax,[rip+0xbc3]        # 0x55555555604f
   0x000055555555548c <+229>:	mov    rdi,rax
   0x000055555555548f <+232>:	mov    eax,0x0
   0x0000555555555494 <+237>:	call   0x5555555550b0 <printf@plt>
   0x0000555555555499 <+242>:	lea    rax,[rbp-0x64]
   0x000055555555549d <+246>:	mov    rsi,rax
   0x00005555555554a0 <+249>:	lea    rax,[rip+0xb9d]        # 0x555555556044
   0x00005555555554a7 <+256>:	mov    rdi,rax
   0x00005555555554aa <+259>:	mov    eax,0x0
   0x00005555555554af <+264>:	call   0x5555555550e0 <__isoc99_scanf@plt>
   0x00005555555554b4 <+269>:	mov    eax,DWORD PTR [rbp-0x64]
   0x00005555555554b7 <+272>:	lea    edx,[rax-0x1]
   0x00005555555554ba <+275>:	movsxd rax,edx
   0x00005555555554bd <+278>:	imul   rax,rax,0xffffffff84210843
   0x00005555555554c4 <+285>:	shr    rax,0x20
   0x00005555555554c8 <+289>:	add    eax,edx
   0x00005555555554ca <+291>:	sar    eax,0x4
   0x00005555555554cd <+294>:	mov    ecx,edx
   0x00005555555554cf <+296>:	sar    ecx,0x1f
   0x00005555555554d2 <+299>:	sub    eax,ecx
   0x00005555555554d4 <+301>:	mov    ecx,eax
   0x00005555555554d6 <+303>:	shl    ecx,0x5
   0x00005555555554d9 <+306>:	sub    ecx,eax
   0x00005555555554db <+308>:	mov    eax,edx
   0x00005555555554dd <+310>:	sub    eax,ecx
   0x00005555555554df <+312>:	add    eax,0x1
   0x00005555555554e2 <+315>:	mov    DWORD PTR [rbp-0x64],eax
   0x00005555555554e5 <+318>:	mov    eax,DWORD PTR [rbp-0x64]
   0x00005555555554e8 <+321>:	mov    DWORD PTR [rbp-0x54],eax
   0x00005555555554eb <+324>:	lea    rax,[rip+0xb63]        # 0x555555556055
   0x00005555555554f2 <+331>:	mov    rdi,rax
   0x00005555555554f5 <+334>:	mov    eax,0x0
   0x00005555555554fa <+339>:	call   0x5555555550b0 <printf@plt>
   0x00005555555554ff <+344>:	lea    rax,[rbp-0x70]
   0x0000555555555503 <+348>:	mov    rsi,rax
   0x0000555555555506 <+351>:	lea    rax,[rip+0xb37]        # 0x555555556044
   0x000055555555550d <+358>:	mov    rdi,rax
   0x0000555555555510 <+361>:	mov    eax,0x0
   0x0000555555555515 <+366>:	call   0x5555555550e0 <__isoc99_scanf@plt>
   0x000055555555551a <+371>:	mov    ecx,DWORD PTR [rbp-0x70]
   0x000055555555551d <+374>:	movsxd rax,ecx
   0x0000555555555520 <+377>:	imul   rax,rax,0x2aaaaaab
   0x0000555555555527 <+384>:	shr    rax,0x20
   0x000055555555552b <+388>:	sar    eax,0x2
   0x000055555555552e <+391>:	mov    esi,ecx
   0x0000555555555530 <+393>:	sar    esi,0x1f
   0x0000555555555533 <+396>:	sub    eax,esi
   0x0000555555555535 <+398>:	mov    edx,eax
   0x0000555555555537 <+400>:	mov    eax,edx
   0x0000555555555539 <+402>:	add    eax,eax
   0x000055555555553b <+404>:	add    eax,edx
   0x000055555555553d <+406>:	shl    eax,0x3
   0x0000555555555540 <+409>:	sub    ecx,eax
   0x0000555555555542 <+411>:	mov    edx,ecx
   0x0000555555555544 <+413>:	mov    DWORD PTR [rbp-0x70],edx
   0x0000555555555547 <+416>:	mov    eax,DWORD PTR [rbp-0x70]
   0x000055555555554a <+419>:	mov    DWORD PTR [rbp-0x58],eax
   0x000055555555554d <+422>:	lea    rax,[rip+0xb08]        # 0x55555555605c
   0x0000555555555554 <+429>:	mov    rdi,rax
   0x0000555555555557 <+432>:	mov    eax,0x0
   0x000055555555555c <+437>:	call   0x5555555550b0 <printf@plt>
   0x0000555555555561 <+442>:	lea    rax,[rbp-0x74]
   0x0000555555555565 <+446>:	mov    rsi,rax
   0x0000555555555568 <+449>:	lea    rax,[rip+0xad5]        # 0x555555556044
   0x000055555555556f <+456>:	mov    rdi,rax
   0x0000555555555572 <+459>:	mov    eax,0x0
   0x0000555555555577 <+464>:	call   0x5555555550e0 <__isoc99_scanf@plt>
   0x000055555555557c <+469>:	mov    eax,DWORD PTR [rbp-0x74]
   0x000055555555557f <+472>:	movsxd rdx,eax
   0x0000555555555582 <+475>:	imul   rdx,rdx,0xffffffff88888889
   0x0000555555555589 <+482>:	shr    rdx,0x20
   0x000055555555558d <+486>:	add    edx,eax
   0x000055555555558f <+488>:	sar    edx,0x5
   0x0000555555555592 <+491>:	mov    ecx,eax
   0x0000555555555594 <+493>:	sar    ecx,0x1f
   0x0000555555555597 <+496>:	sub    edx,ecx
   0x0000555555555599 <+498>:	imul   ecx,edx,0x3c
   0x000055555555559c <+501>:	sub    eax,ecx
   0x000055555555559e <+503>:	mov    edx,eax
   0x00005555555555a0 <+505>:	mov    DWORD PTR [rbp-0x74],edx
   0x00005555555555a3 <+508>:	mov    eax,DWORD PTR [rbp-0x74]
   0x00005555555555a6 <+511>:	mov    DWORD PTR [rbp-0x5c],eax
   0x00005555555555a9 <+514>:	lea    rax,[rip+0xab5]        # 0x555555556065
   0x00005555555555b0 <+521>:	mov    rdi,rax
   0x00005555555555b3 <+524>:	mov    eax,0x0
   0x00005555555555b8 <+529>:	call   0x5555555550b0 <printf@plt>
   0x00005555555555bd <+534>:	lea    rax,[rbp-0x78]
   0x00005555555555c1 <+538>:	mov    rsi,rax
   0x00005555555555c4 <+541>:	lea    rax,[rip+0xa79]        # 0x555555556044
   0x00005555555555cb <+548>:	mov    rdi,rax
   0x00005555555555ce <+551>:	mov    eax,0x0
   0x00005555555555d3 <+556>:	call   0x5555555550e0 <__isoc99_scanf@plt>
   0x00005555555555d8 <+561>:	mov    eax,DWORD PTR [rbp-0x78]
   0x00005555555555db <+564>:	movsxd rdx,eax
   0x00005555555555de <+567>:	imul   rdx,rdx,0xffffffff88888889
   0x00005555555555e5 <+574>:	shr    rdx,0x20
   0x00005555555555e9 <+578>:	add    edx,eax
   0x00005555555555eb <+580>:	sar    edx,0x5
   0x00005555555555ee <+583>:	mov    ecx,eax
   0x00005555555555f0 <+585>:	sar    ecx,0x1f
   0x00005555555555f3 <+588>:	sub    edx,ecx
   0x00005555555555f5 <+590>:	imul   ecx,edx,0x3c
   0x00005555555555f8 <+593>:	sub    eax,ecx
   0x00005555555555fa <+595>:	mov    edx,eax
   0x00005555555555fc <+597>:	mov    DWORD PTR [rbp-0x78],edx
   0x00005555555555ff <+600>:	mov    eax,DWORD PTR [rbp-0x78]
   0x0000555555555602 <+603>:	mov    DWORD PTR [rbp-0x60],eax
   0x0000555555555605 <+606>:	mov    eax,DWORD PTR [rbp-0x68]
   0x0000555555555608 <+609>:	cmp    eax,0x2
   0x000055555555560b <+612>:	jg     0x555555555618 <main+625>
   0x000055555555560d <+614>:	mov    eax,DWORD PTR [rbp-0x6c]
   0x0000555555555610 <+617>:	lea    edx,[rax-0x1]
   0x0000555555555613 <+620>:	mov    DWORD PTR [rbp-0x6c],edx
   0x0000555555555616 <+623>:	jmp    0x55555555561e <main+631>
   0x0000555555555618 <+625>:	mov    eax,DWORD PTR [rbp-0x6c]
   0x000055555555561b <+628>:	sub    eax,0x2
   0x000055555555561e <+631>:	mov    edx,DWORD PTR [rbp-0x64]
   0x0000555555555621 <+634>:	add    eax,edx
   0x0000555555555623 <+636>:	mov    DWORD PTR [rbp-0x64],eax
   0x0000555555555626 <+639>:	mov    eax,DWORD PTR [rbp-0x68]
   0x0000555555555629 <+642>:	imul   eax,eax,0x17
   0x000055555555562c <+645>:	movsxd rdx,eax
   0x000055555555562f <+648>:	imul   rdx,rdx,0x38e38e39
   0x0000555555555636 <+655>:	shr    rdx,0x20
   0x000055555555563a <+659>:	sar    edx,1
   0x000055555555563c <+661>:	sar    eax,0x1f
   0x000055555555563f <+664>:	sub    edx,eax
   0x0000555555555641 <+666>:	mov    eax,DWORD PTR [rbp-0x64]
   0x0000555555555644 <+669>:	add    eax,edx
   0x0000555555555646 <+671>:	lea    ecx,[rax+0x4]
   0x0000555555555649 <+674>:	mov    eax,DWORD PTR [rbp-0x6c]
   0x000055555555564c <+677>:	lea    edx,[rax+0x3]
   0x000055555555564f <+680>:	test   eax,eax
   0x0000555555555651 <+682>:	cmovs  eax,edx
   0x0000555555555654 <+685>:	sar    eax,0x2
   0x0000555555555657 <+688>:	add    ecx,eax
   0x0000555555555659 <+690>:	mov    eax,DWORD PTR [rbp-0x6c]
   0x000055555555565c <+693>:	movsxd rdx,eax
   0x000055555555565f <+696>:	imul   rdx,rdx,0x51eb851f
   0x0000555555555666 <+703>:	shr    rdx,0x20
   0x000055555555566a <+707>:	sar    edx,0x5
   0x000055555555566d <+710>:	sar    eax,0x1f
   0x0000555555555670 <+713>:	sub    eax,edx
   0x0000555555555672 <+715>:	add    ecx,eax
   0x0000555555555674 <+717>:	mov    eax,DWORD PTR [rbp-0x6c]
   0x0000555555555677 <+720>:	movsxd rdx,eax
   0x000055555555567a <+723>:	imul   rdx,rdx,0x51eb851f
   0x0000555555555681 <+730>:	shr    rdx,0x20
   0x0000555555555685 <+734>:	sar    edx,0x7
   0x0000555555555688 <+737>:	sar    eax,0x1f
   0x000055555555568b <+740>:	mov    esi,eax
   0x000055555555568d <+742>:	mov    eax,edx
   0x000055555555568f <+744>:	sub    eax,esi
   0x0000555555555691 <+746>:	lea    edx,[rcx+rax*1]
   0x0000555555555694 <+749>:	movsxd rax,edx
   0x0000555555555697 <+752>:	imul   rax,rax,0xffffffff92492493
   0x000055555555569e <+759>:	shr    rax,0x20
   0x00005555555556a2 <+763>:	add    eax,edx
   0x00005555555556a4 <+765>:	sar    eax,0x2
   0x00005555555556a7 <+768>:	mov    ecx,edx
   0x00005555555556a9 <+770>:	sar    ecx,0x1f
   0x00005555555556ac <+773>:	sub    eax,ecx
   0x00005555555556ae <+775>:	mov    ecx,eax
   0x00005555555556b0 <+777>:	shl    ecx,0x3
   0x00005555555556b3 <+780>:	sub    ecx,eax
   0x00005555555556b5 <+782>:	mov    eax,edx
   0x00005555555556b7 <+784>:	sub    eax,ecx
   0x00005555555556b9 <+786>:	mov    DWORD PTR [rbp-0x48],eax
   0x00005555555556bc <+789>:	lea    rdx,[rbp-0x60]
   0x00005555555556c0 <+793>:	lea    rax,[rbp-0x20]
   0x00005555555556c4 <+797>:	mov    rsi,rdx
   0x00005555555556c7 <+800>:	mov    rdi,rax
   0x00005555555556ca <+803>:	call   0x555555555290 <_calendar>
   0x00005555555556cf <+808>:	lea    rax,[rbp-0x20]
   0x00005555555556d3 <+812>:	mov    rsi,rax
   0x00005555555556d6 <+815>:	lea    rax,[rip+0x991]        # 0x55555555606e
   0x00005555555556dd <+822>:	mov    rdi,rax
   0x00005555555556e0 <+825>:	mov    eax,0x0
   0x00005555555556e5 <+830>:	call   0x5555555550b0 <printf@plt>
   0x00005555555556ea <+835>:	mov    eax,DWORD PTR [rbp-0x50]
   0x00005555555556ed <+838>:	cmp    eax,0xb
   0x00005555555556f0 <+841>:	jne    0x555555555720 <main+889>
   0x00005555555556f2 <+843>:	mov    eax,DWORD PTR [rbp-0x54]
   0x00005555555556f5 <+846>:	cmp    eax,0x19
   0x00005555555556f8 <+849>:	jne    0x555555555720 <main+889>
   0x00005555555556fa <+851>:	mov    eax,DWORD PTR [rbp-0x48]
   0x00005555555556fd <+854>:	test   eax,eax
   0x00005555555556ff <+856>:	jne    0x555555555720 <main+889>
   0x0000555555555701 <+858>:	cmp    DWORD PTR [rbp-0x4],0x0
   0x0000555555555705 <+862>:	je     0x555555555720 <main+889>
   0x0000555555555707 <+864>:	lea    rax,[rip+0x973]        # 0x555555556081
   0x000055555555570e <+871>:	mov    rdi,rax
   0x0000555555555711 <+874>:	call   0x5555555550a0 <puts@plt>
   0x0000555555555716 <+879>:	mov    eax,0x0
   0x000055555555571b <+884>:	call   0x55555555524e <flag>
   0x0000555555555720 <+889>:	mov    eax,0x0
   0x0000555555555725 <+894>:	leave  
   0x0000555555555726 <+895>:	ret    
End of assembler dump.

 

으에에 오프셋 구해줘,..