반응형

전체 글 368

[Harekaze CTF 2018] Flea attack writeup v2

두 번째 방법heap에 flag가 저장되어 있음. printf(Name : %s\n)을 이용해서 flag를 출력. 문제 분석heap 영역에 flag를 저장하고 있는 chunk가 존재한다. 시나리오 맨 처음 heap 영역의 구조는 다음과 같다. 왜 인지는 잘 모르겠지만, FLAG가 heap에 저장되어 있다. 할당된 영역이므로 free가 가능하고 free 시에는 데이터가 초기화되지 않으므로, 위의 두 영역들을 free하고 다시 재할당 받으면 printf(Name : %s\n)을 통해서 FLAG를 읽을 수 있다. [ heap 영역]

Write-up 2018.02.27

[Harekaze CTF 2018] Flea attack writeup v1

아쉽게 대회 때 풀지 못한 flea attack이다. 당시에는 사실 풀 방법이 생각나지 않았는데, double free에 대해서 잘 몰랐었다; 아무튼 지금은 잘 알게 되었으니, 열심히 이용해서 익스를 짜야겠다. 현재까지 flea attack을 풀 수 있는 세 가지정도의 방법을 알아냈다. 알아낸 방법 모두 write up를 작성할 계획이다.1. double free 를 이용해서 fake chunk 를 comment 에 만들어주어, add_name으로 할당하면서 printf(Name : %s\n)로 flag까지 출력.2. heap에 flag가 저장되어 있음. printf(Name : %s\n)을 이용해서 flag를 출력.3. 역시 마찬가지로 double free 를 이용해서 할당하는데, fake chunk를..

Write-up 2018.02.26

[CODEGATE 2018] Super marimo write-up

Codegate 2018 Super marimo 라는 문제임니다. 우선, 문제를 적당히 파악해 봅시다. 포인터를 이용해 참조하는 부분은, 좀 더 편히 보기 위해 적당한 구조체를 만들어 연결해줍시다.대충 위와 같이, 전보다는 보기 편해졌습니다. 이제 적당히 분석을 시작합니닿. 정말로 적당히 분석해보면, 저기 28번째 줄에서 취약점을 발견하실 수 있습니다. 이해가 쏙쏙 되도록 적당한 예를 하나 들어봅시닿 위의 그림은 이름은 각 각 "AAAAA...", "BBBBBB..."이고, profile은 둘 모두 "0000000.." 인 marimo를 "show me the marimo"라는 치트를 통해 만들었을 때의 힙 영역을 나타낸 것임니다. 위와 같은 상황에서 만약, 첫 번째 marimo의 profile을 만약 ..

Write-up 2018.02.20

IDA elf 파일 디버깅하기

IDA elf file debug IDA에서 elf 파일을 가상머신(guest OS)의 리눅스를 이용하여 디버깅 해 봅시담.먼저, IDA 폴더 안에 있는 server 파일을 게스트 OS에서 실행시켜야 합니다. IDA 설치 시 생성되는 폴더 안의 dbgsrv 디렉토리에 있는 linux_server 와 linux_server64 파일을 게스트 OS에 복사해줍니담. [복사]서버 파일을 실행시켜주면, 위와 같은 화면을 볼 수 있는뎅여 테스트로 64비트의 elf 파일을 디버깅 해 볼 것이니, linux_server64 파일을 실행시켜 줍니당 그 뒤 다른 터미널을 열든지 해서, ifconfig 명령어를 통해 게스트 OS의 IP를 알아냅니다. 제 OS에서는 192.168.92.128 이넵여 IDA로 돌아와서, 분석할..

ubuntu one_gadget 설치하기 (feat. rvm, ruby, gem)

으아아아아아아아ㅏ아아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ 원가젯 겨우 설치햇다. ubuntu 16.04> sudo apt-get install software-properties-common> sudo apt-add-repository -y ppa:rael-gc/rvm> sudo apt-get update> sudo apt-get install rvm terminal 의 profile 설정에서 Run command as a login shell 해주고, 재부팅이나 로그아웃을 해준다. > rvm install ruby 루비까지 설치해주면 이제 gem을 사용할 수 있다! > gem install one_gadget 참고 : https://github.com/rvm/ubuntu_rvm [+] ubuntu 18.04이 시점에서는..

ubuntu 16 한글 세팅

참고하며 할 것.http://hochulshin.com/ubuntu-1604-hangul/ 먼저 한글 패키지를 설치한다.> sudo apt-get install fcitx-hangul설치 완료 뒤, System Settings의 Language Support 에 들어가면 또 설치 창이 나오는데 여기까지 완료 후, 입력 방식을 fcitx 로 바꿔준다. 완료되었으면 재부팅하고, 후의 과정을 천천히 따라간다. 노트북에서는 한/영 키가 alt로 인식이 되므로 이를 방지하기 위해, 위와 같이 세팅해준다. 여기서 Configure Current Input Method 를 선택, 역시 위와 같은 상태로 세팅한다. 여기서 +에서 한글이 뜨지 않는다면, 맨 처음 한글 패키지 설치과정 상에서 문제가 발생한 것이므로 다시 ..

ubuntu 저장소 변경

저장소의 설정파일을 수정해줍니다.> sudo vi /etc/apt/sources.list > : %s /us.archive.ubuntu.com/mirror.kakao.com위와 같이 기존 us.archive.ubuntu.com 으로 되어있는 문자열을 mirror.kakao.com 으로 바꿔줍니다.다만 저장소의 주소는 변할 수 있으므로 https://launchpad.net/ubuntu/+cdmirrors 를 참고합시다. 변경이 완료되었다면, 변경된 최신내용이 반영되도록 저장소를 업데이트해줍니다.> sudo apt update

IDA 구조체 연결하기

가끔 IDA로 바이너리를 분석할 때, 구조체를 이용하면 좀 더 편하게 분석을 진행할 수 있습니당. 이유는 모르겠는데, IDA에서는 거의 구조체를 정의해주지 않는 것 같습니다. 암튼, 이럴 경우에 직접 구조체를 만들어줌으로써, 좀 더 편하게 분석할 수 있는 환경을 만들어줍시다. 일단 위와 같이 Structures 탭에서 구조체를 만들어줍니당. 저 왼쪽의 숫자에 대고 d를 누르면 필드를 계속 추가할 수 있습니다. 그 후 필드 이름에 커서를 놓고 n을 눌러 필드의 이름을 바꿔줍시당. 그 옆에 있는 db, dw, dd는 역시 커서를 위에 올려놓고, d를 이용해서 크기를 바꿔줄 수 있습니다. 이제 구조체가 사용되기 원하는 곳에 구조체를 연결해 줍시다! 데이터 타입을 즉당히 struct 로 해서 바꿔주면 됩니당.즈..

반응형