분류 전체보기 309

[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

[HackCTF : Pwnable] adultfsb 풀이 (64bit, FSB)

문제 풀이 환경 : ubuntu 16.04 사용 툴 : IDA 7.5 pro 풀렐로일땐 rtld! 카나리도 없고 풀렐로이다. (got overwriting을 못한다.) fsb는 터지지만 bof는 터지지 않는다. 하지만 fsb로 모든게 해결이 가능하다. 두 번 터져서 넘 좋다. Summary libc leak rtld를 one_gadget으로 overwriting from pwn import * #p = process('./adult_fsb') p = remote('ctf.j0n9hyun.xyz', 3040) e = ELF('./adult_fsb') libc = ELF('./libc.so.6') rtld_offset = 0x5f0f48 one_gadget_offset = 0xf1147 # offset 8 ..

WAR GAME/HackCTF 2021.04.26

[HackCTF : Pwnable] childfsb 풀이 (64bit, FSB)

문제 풀이 환경 : ubuntu 16.04 사용 툴 : IDA 7.5 pro fsb, bof 둘 다 터짐 하지만 bof로 RET를 건들 수는 없고, canary를 건드려 __stack_chk_fail 함수만 호출가능할 정도... +로 직전에 풀었던 babyfsb 문제와 달라진 점이있는데, read함수로 적을 수 있는 size가 0x19로 매우 짧아졌단 것. 그래서 두바이트씩 찔끔찔끔 덮어야 한다. Summary __stack_chk_fail 함수를 main 함수로 overwriting libc 주소 leak main의 ret를 one_gadget으로 overwriting 처음에 __stack_chk_fail 함수를 main 함수로 overwriting할 때, 하위 2바이트만 덮어도 된다. main의 re..

WAR GAME/HackCTF 2021.04.26

[HackCTF : Pwnable] babyfsb 풀이 (64bit, FSB)

문제 풀이 환경 : ubuntu 16.04 사용 툴 : IDA 7.5 pro partial relro인데 마땅히 덮을 got가 없다면? __stack_chk_fail 함수를 덮어라! (canary가 존재할 시) 사실 bof가 터지는게 먼저입니다 fsb, bof 둘 다 터짐 하지만 bof로 RET를 건들 수는 없고, canary를 건드려 __stack_chk_fail 함수만 호출가능할 정도... 마땅히 덮을 만한 함수가 없으니 이것을 원가젯으로 덮기로 함 Summary __stack_chk_fail 함수를 main 함수로 overwriting libc 주소 leak __stack_chk_fail 함수를 one_gadget으로 overwriting from pwn import * p = process('./..

WAR GAME/HackCTF 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

64bit에서 FSB (Format String Bug) 이해하기 -(3)(완)

참고자료 : JSec님 블로그(blog.naver.com/yjw_sz/221889244689) 64bit FSB 시리즈 : 64bit에서 FSB (Format String Bug) 이해하기 -(1), (2) 32bit FSB 시리즈 : 32bit에서 FSB (Format String Bug) 이해하기 -(1),(2),(3) 지난번에 FSB 취약점을 이용하여 shell함수를 exit@got에 덮어보았다. 오늘은 shell함수가 없다..! * (2)을 보지 않았으면 (2)부터 꼭 보고 (3)번 글을 읽길 바랍니당. system('/bin/sh') system('/bin/sh')는 쉘을 실행하는 시스템 함수이다. 포너블 분야에서는 이 함수를 최종적으로 실행하여 익스플로잇에 성공하게 된다 이 함수를 실행시키기 ..

64bit에서 FSB (Format String Bug) 이해하기 -(2)

참고자료 : JSec님 블로그(blog.naver.com/yjw_sz/221889244689) 64bit FSB 시리즈 : 64bit에서 FSB (Format String Bug) 이해하기 -(1) 32bit FSB 시리즈 : 32bit에서 FSB (Format String Bug) 이해하기 -(1),(2),(3) 지난번에 간단하게.. fSB 취약점을 이용하여 변수의 값을 바꿔보았다. 오늘은 shell함수가 등장한다.. (1)을 보지 않았으면 (1)부터 꼭 보고 (2)번 글을 읽길 바랍니당. PLT와 GOT PLT : 외부 라이브러리 함수를 사용할 수 있도록 주소를 연결해주는 역할을 하는 테이블 GOT : PLT에서 호출하는 resolve 함수를 통해 구한 라이브러리 함수의 절대 주소가 저장되어 있는 테..