CTF 46

[DCTF 2021 : pwnable] formats last theorem 풀이 (FSB, printf, malloc_hook)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 대회시간 중 삽질만 퍽퍽하다가 결국 못풀었던 문제이다. 롸업보고 풀었다 ㅠ_____ㅠ printf에서 malloc_hook을 트리거할 수 있다는 것을 배웠다. 400점짜리 문제 description : I dare you to hook the malloc Analysis mitigation Full RELRO이다. got overwriting은 기본적으로 되지 않겠지.. 여기서 기본적으로 흐름을 바꿀 수 있는 키워드?는 malloc_hook, free_hook, rtld 등이 있다. execution 혹시나 했는데 FSB가 트리거 된다. code main이 vuln을 호출한다. 저 printf에서 FSB 취약점이 트리거 될 수 ..

CTF/Write UPs 2021.05.17

[DCTF 2021 : pwnable] 내가 푼 문제들 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro Pwn sanity check main에서 vuln 함수를 호출한다. 그리고 shell함수를 호출하면서 리턴을 한다. shell 함수를 살펴보면 별 게 없다...... 하지만 함수 목록을 보면 win이라는 함수가 있다. 이 함수는 인자를 2개를 필요로 한다. 이 인자의 값이 조건과 맞아떨어지면 system함수를 호출한다. 이 바이너리는 64bit 운영체제이기 때문에 pop rdi와 pop rsi와 같은 가젯을 이용하여 win 함수의 인자를 조절을 해줘야 한다. from pwn import * #context.log_level = 'DEBUG' #p = process('./pwn_sanity_check') p = remote('d..

CTF/Write UPs 2021.05.17

DCTF 2021 후기

대회 정보 : https://ctftime.org/event/1361 대회 시간 : 2021.05.15 00:00 KST — 2021.05.17, 06:59 KST 내가 적은 롸업 : https://jiravvit.tistory.com/entry/DCTF-2021-pwnable-%EB%82%B4%EA%B0%80-%ED%91%BC-%EB%AC%B8%EC%A0%9C%EB%93%A4-%ED%92%80%EC%9D%B4 pwn 분야에서 2문제 빼고 전부 풀었다. 못 푼 문제 중에서 FSB 문제가 하나 있었는데 디스크립션이 malloc hook인가..? 그랬었다. 근데 그걸 왜 준지도 모르겠고.. ㅠㅠ 그냥 rtld를 원가젯으로 덮었는데 안됐었다. while문을 빠져나오지 못했기 때문인가..? 대회 끝나고 롸업을 ..

CTF/CTF 후기 2021.05.17

[SanDiegoCTF 2021 : pwnable] printFAILED 풀이 (FSB)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro '못하겠다'라고 생각해서 못 푼 문제다. '할수있다'라고 생각했으면 풀었을 듯 하다.. 이게 포넙 중에서 솔브 수가 가장 높다. 풀기 전엔 왜 솔브 수가 가장 많지..? 했는데... 풀고나니 바로 납득 되어버림 Analysis mitigation execution 로컬에서는 세폴이 뜨는데 nc로 접속했을 때는 잘된다. 바이너리를 열어보자. code 로컬에서 돌렸을 때, 저기 주황색 부분 때문에 세폴이 뜬다. 정확히는 flag.txt 파일을 열어서 fgets로 flag 전역변수에다가 flag.txt 내용을 쓰는데 로컬에 flag.txt가 없어서 세폴이 떴던 것... 결론은 로컬에 flag.txt를 하나 만들어줘야한다. 그럼 이렇게..

CTF/Write UPs 2021.05.11

[SanDiegoCTF 2021 : pwnable] Unique Lasso 풀이 (Sig ROP)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 하..풀릴듯 말듯 했는데 결국 못풀었었다. Analysis mitigation execution code 함수가 넘 많아서 문자열 찾기로 인풋 넣는 곳 찾았다. (main함수였네) RIP 컨트롤이 가능해서 쉽게 풀릴거 같은 느낌이다. flag를 주는 함수도 딱히 없었고해서 bss영역에다가 '/bin/sh'문자열 넣고 실행해야겠다는 생각을 하였다. Exploit Scenario Summary sys_read 호출하여 bss 영역에 '/bin/sh' 문자열 삽입 sys_sigreturn 호출 ~ (Sig ROP) 처음엔 syscall로 sys_read를 호출해서 bss영역에 /bin/sh 문자열을 쓰고난 다음에 main으로 리턴하려..

CTF/Write UPs 2021.05.10

[SanDiegoCTF 2021 : pwnable] Flag dROPper 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 문자열 찾기해서 어디서 인풋되는지도 찾고.. flag.txt도 안에 들어있는 걸 운좋게 확인했다. syscall을 바로 쓴게 인상깊다. exit 함수 안에 sys_exit를 호출한 이후, flag를 열어서 화면에 출력해준다. RIP를 exit 함수 그자체가 아닌 flag를 여는 부분으로 바꿔줘야한다. RIP를 control할 수 있는지 테스트해보니까(main 마지막에 jmp [rax]가 있음) 가능해서 바로 flag를 얻었다. from pwn import * #p = process('./flagDropper') p = remote('dropper.sdc.tf', 1337) e = ELF('./flagDropper') payloa..

CTF/Write UPs 2021.05.10

SanDiegoCTF 2021 후기

대회 정보 : ctftime.org/event/1255 대회 시간 : 2021.05.08 09:00 KST — 2021.05.10, 09:00 KST 내가 적은 롸업 : jiravvit.tistory.com/entry/SanDiegoCTF-2021-pwnable-Flag-dROPper-%ED%92%80%EC%9D%B4 신기하게 디스코드로 운영되는 ctf였다. 이런 ctf 처음이다... 새니티체크 제외하고 한문제 풀었다 ㅎㅎㅎ;ㅋㅋㅋㅋㅋ 다른 문제들 끙끙거리다가 포기했다 ㅠㅠ flag-dropper는 쉽게 풀었는데, printfailed는... nc로 접속했을 때 바로 fsb가 보였다. 하지만 로컬에서 디버깅하면서 offset을 구해야 하는데, 로컬에서 디버깅은 커녕 실행도 되지 않았다;; ㅠㅠ 문의하니까..

CTF/CTF 후기 2021.05.10

[DawgCTF 2021] 내가 푼 문제들 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro [Pwnable] Jellyspotters python pickle 취약점 기능들 막 보다가 pickle 취약점임을 확인했다. 바로 얼마전에 pickle 문제 풀었었는데, 그때도 load할 때 base64 디코딩을 했었다. 그래서 코드 복붙해서 풀었당. import pickle import base64 import os from pwn import * class Vuln(object): def __reduce__(self): return (os.system, ('cat ~/flag.txt', )) pickle_data = pickle.dumps(Vuln()) data_bytes = pickle_data.encode('ascii'..

CTF/Write UPs 2021.05.10

DawgCTF 2021 후기

대회 정보 : ctftime.org/event/1319 대회 시간 : 2021.05.08 07:00 KST — 2021.05.09, 07:00 KST 내가 적은 롸업 : jiravvit.tistory.com/entry/DawgCTF-2021-%EB%82%B4%EA%B0%80-%ED%91%BC-%EB%AC%B8%EC%A0%9C%EB%93%A4-%ED%92%80%EC%9D%B4 4시간 반??정도 참여했다. 집중력 떨어져서 죽는 줄 알았다ㅎ.. 난 집중력이 너무 짧은 것 같다 ㅠ 포너블 첫번째 문제 No Step On Snek 문제는 미로찾기 같은 문제였다. 근데 이게 말을 움직이는데, 실제로 화면상의 말이 움직이는 모습이 출력이 되질 않았다;; ㅠ 코딩해야하나 싶어서... 관뒀다... 나머지 두 문제들은 수..

CTF/CTF 후기 2021.05.10