분류 전체보기 309

[NOTE : pwnable] 어떨 때 syscall ROP를 하나요?

BOF가 터져서 RET를 어떤 함수(주소)로 덮을까 고민이 되었다. 함수 목록을 보면 flag를 출력해주는 함수도 없었고, system함수도 존재하지 않았따... 심지어 nx도 걸려있어서 쉘코드 실행도 못한다. 출력해주는 함수도 없어서 leak도 못하는 상황 그리고 static으로 컴파일되어있을때, 혹은 stripped 파일일 때, (전자는 모든 함수가 sub_*, 후자는 사용자정의함수가 sub_*) 이럴 때 syscall ROP를 한다. jiravvit.tistory.com/entry/HackCTF-Pwnable-look-at-me-%ED%92%80%EC%9D%B4-32bit-syscall jiravvit.tistory.com/entry/DEFCON-2019-speedrun-001-%ED%92%80%E..

Note/pwnable 2021.04.16

[HackCTF : Pwnable] Unexploitable #2 풀이 (64bit, system)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 이런 시리즈류의 문제는 잘 모르겠으면 그 다음 문제와 비교하여 뭐가 달라졌는지 확인하면 큰 힌트가 될 수 있다. 아 그리고 system함수로 leak을 할 수 있는 걸 처음 알았다. 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 귀신같이 fflush로 문제푼건 어떻게 알고...ㅎ IDA 1이랑 코드가 거의 똑같다. 대신 fflush가 없다. 사실 이 문제 시리즈 3을 봤는데, 거기엔 system@plt가 없다고 했다. 그래서 system함수를 이용하여 문제를 푸는구나~라고 생각하고 system함수에 집중하였다. How to exploit system 함수의 인자로는 명령어가 들어간다. 근데... 평범한 문자열..? ..

WAR GAME/HackCTF 2021.04.15

[HackCTF : Pwnable] Unexploitable #1 풀이 (64bit, sh)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 이제 sh 문자열만 보면 흥분할 것 같다 wish.. fish.. 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 system 함수의 plt를 가지고 있단다. IDA 오호 정말 선물처럼 system함수가 있다. main을 살펴보면 bof가 발생한다. How to exploit system 함수를 줘서 친절하게 /bin/sh 문자열도 어디 숨겨놨나~ 하고 찾아봤다. sh 명령으로도 익스할 수 있다. (jiravvit.tistory.com/entry/HackingCamp-CTF-2021-pwn-Secure-Test-%ED%92%80%EC%9D%B4-%EC%96%B8%EC%9D%B8%ED%85%90?category=9023..

WAR GAME/HackCTF 2021.04.15

[HackCTF : Pwnable] j0n9hyun's secret 풀이 (64bit, fd overwrite)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro JSec님이 문제 내신거다. 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 음 이름을 입력받는다... 뭐지 실행 후 파일을 살펴보면, flag와 top_secret 파일이 생성된다. IDA 함수 이름이 저런 것이 보아 ... static으로 컴파일 한 것 같다. main함수를 찾아보자. 프로그램이 시작하면 start함수를 젤 먼저 실행한다. 여기서 main을 호출하는 구조이다. 그래서 먼저 start를 함수를 찾아서 저기 안에 있는 함수들을 보면서 main을 찾으면 된다. (현재 사진은 내가 main을 찾고 rename해놓은 것이다.) 저기 출력된 문자열을 보고 이 함수가 main임을 확신하고 rename시켜주었다...

WAR GAME/HackCTF 2021.04.15

[HackCTF : Pwnable] uaf 풀이 (32bit, uaf, 힙알못)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 힙알못의 uaf 문제 풀이입니당 힙알못이라 푸는데 오래 걸렸음 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 종현님이랑 엉덩이 공부를 할 수 있다. 느낌상, uaf를 이용해야하고 힙에 원하는 바이트만큼 쓸수도 있고 삭제도 되고 출력도 되는 것 같다. 솔직히 여기까지 개쉽겠다라고 생각했다. (사실 개쉬운 문제 맞다.) 암튼.. uaf라고 함은... use after free... free된 후 사용하는건데 malloc하고 free한 후, 방금 free된 바이트 수? 만큼 똑같이 malloc하면 똑같은 자리에 위치된다? 이거를 이용하는 것이다. IDA main에서 봐야할 것은 4가지 함수이다. add_note del_n..

WAR GAME/HackCTF 2021.04.15

[HackCTF : Pwnable] pwning풀이 (32bit, underflow)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 하마터면 못풀뻔했다. 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 쓰고싶은 바이트 수를 쓰고 그 바이트만큼 쓸 수 있다. IDA main은 간단하다. vuln 함수 하나 있다. 여기서 주목해야할 건 v2 변수가 int라는 것이다. 그래서 -1을 입력하게되면 언더플로우가 발생해서 겁나 큰 수가 되게 된다. get_n 함수는.. getchar()함수를 이용해서 '\n' 오기 전까지 입력받는 거다. (사실 저런 수 입력하는거 보면 -1 입력하고 싶은 욕구(?)가 생겨서 코드보기전에 일단 -1부터 눌러봤다 ㅋㅋ) How to exploit -1를 입력하여 BOF를 트리거 하여 ROP해주면 될 듯하다. 리모트로 익스하려면 ..

WAR GAME/HackCTF 2021.04.15

[OS] Lecture 4. Thread management 정리

참고 : https://www.youtube.com/watch?v=YlnvCIZQDkw&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=7 이거 보기 전에 쓰레드가 뭐야? 라고 누가 나한테 물어보면 실..? 이라고밖에 대답이 안나왔다 ㅋㅅㅋ;; 그리고 뭔가 프로세스 비스무리한 느낌이라고 해야하나... 그런 느낌만 들고 부끄럽지만 사실 잘 몰랐다. 이번기회에 좀 더 확실히 알게되서 좋은 것 같다. 스레드는 프로세스 안에 여러개씩 있을 수 있는데, 자원은 공유하고 제어요소를 가지고 있는 것이다. 쓰레드가 여러개면 쓰레드는 동시에 여러개의 CPU를 사용할 수 있다. 제어요소에는 뭐 PC, 지역데이터?같은게 될 수 있다. 아 그리고 스레드는 프로세스를 여러개로 쪼갠 느낌 이라고..

운영체제 2021.04.13

[HackCTF : Pwnable] gift 풀이 (32bit, ROP)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 250점 짜리 문제인데 이정도는 껌이지 후훗 주어진 파일은 문제파일 바이너리 Analysis IDA로 열어보자. binsh 는 bss영역의 변수다. binsh와 system 함수의 주소를 출력해준다. printf 함수를 통해서 fsb가 트리거될 수 있는데 쓸만한거 주소들 다 출력해주니 딱히 leak할 것이 없어보였다. 실행중인 함수의 주소를 출력해주니깐... 마지막으로 gets 함수에서는 bof가 트리거된다. 여기서 RET를 system함수 주소로 바꾸고 인자를 '/bin/sh'로 주면 될 것 같다. 그래서 줘봤는데... 안되어서 보니깐 binsh 주소에 아무것도 저장되어 있지 않았다.. ㅠㅠ...! 그래서 먼저 gets 함수를..

WAR GAME/HackCTF 2021.04.10