64bit 7

[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

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 함수를 통해 구한 라이브러리 함수의 절대 주소가 저장되어 있는 테..

[HackCTF : Pwnable] You are silver 풀이 (64bit, FSB) (수정)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 64bit FSB 잘 몰라서 진짜 대충대충 인터넷에 떠도는 fsb 자료들 보고 야매로 풀었다... ㅎ 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 이름을 입력하니까 입력했던게 출력이 되고, 나보고 silver라고 한다. 그리고 세폴이 뜨며 중지된다. 왜그런거지..?! IDA main을 살펴보자. 저기 대놓고 fsb가 터진다. bof도 터지는데, 쪼잔하게 터져서 RET를 건들수 없다. 문제풀 때 대충 그린건데.... 이해는 갈거라 생각한다. get_tier함수를 살펴보자. 요악하자면 인자가 a1인데, 인자로 들어온게 'K' 즉, 75보다 크면 4를 반환한다. (내가 왜 여기만 보여주는지는 밑에가서 알 수 있을 것) ..

WAR GAME/HackCTF 2021.04.20

[HackCTF : Pwnable] x64 Buffer Overflow 풀이 (64bit, BOF)

문제 풀이 환경 : ubuntu 16.04 사용 툴 : IDA 7.5 pro Analysis 대놓고 scanf에서 BOF가 터진다. How to exploit payload = dummy + SFP + RET RET를 callMeMaybe 함수로 덮는다! Let's exploit from pwn import * #p = process('64bof_basic') p = remote('ctf.j0n9hyun.xyz', 3004) e = ELF('./64bof_basic') callMeMaybe = 0x400606 payload = '' payload += 'A' * 272 payload += 'BBBBBBBB' # SFP payload += p64(callMeMaybe) # RET p.sendline(pay..

WAR GAME/HackCTF 2021.03.05

[dreamhack : pwnable] basic_rop_x64 풀이

문제 풀이 환경 : ubuntu 16.04.7 64bit에서 ROP 문제이다. main에서 bof가 발생하고 있다. buf 크기는 0x40이지만 read로 0x400을 읽으려고 하고 있다. 페이로드를 총 두 번 짤 것이다. 첫 번째 페이로드는 libc_base를 구하기 위함이다. libc_base를 구하기 위해 read함수의 실제 주소를 leak한다. 그리고 RET를 main으로 줘서 main이 한 번 더 돌게 한다. 두 번 째 페이로드에서 RET에 system함수를 넣어 진짜 쉘을 딸 것이다. 첫 번째 payload : read 함수의 실제 주소 leak read 함수의 실제 주소를 leak하기 위해서는 어떻게 해야 할까? 출력하는 함수 인자로 read함수 got를 주면 read 함수의 실제 주소가 출..

WAR GAME/dreamhack 2021.01.20