-
[Belluminar 2016] remuheapCTF 2016. 11. 27. 18:10
이 문제는 기본적으로 베이스를 깔아둬야할것은 다음과같다. 1. Ubuntu 16.04 LTS fgets ( 얼마전에 Allocate Heap with fgets 라는 제목으로 블로그에 글을 올린적이 있음 )2. Unsorted bin attack 위 두개를 이용해서 GOT를 덮고, format string 을 이용해서 릭한후, 다시한번 GOT를 덮어 호출하게되면 쉘이 따이는 문제이다.헉 스포 다해버렸띠.. 메뉴 선택은 위와 같은 함수를 이용해서 한다. 이 함수가 매우 쓸모있음 *_* ㅎㅎ 1번 메뉴는 malloc을 해주는 함수인데, size를 입력받는다, 512 ~ 4096 사이즈라면 할당 할 수 있다. read 도한 4095바이트를 입력받고, 할당을 하게되면 chunk_inuse를 나타내는 0x6020..
-
HITCON 2014 stkofCTF 2016. 11. 26. 23:39
fake chunk를 만들어주는 문제, 일단 unlink는 호출했고, 이게 fastbins 에서 익스하는 문제란다. malloc pointer를 fd와 bk에 넣어줘도 제대로 안되는거때문에 나중에 풀어야겠다 1번메뉴는 아래와 같다. fgets로 malloc size 를 입력하고 할당해준다. malloc pointer는 s 변수에 담긴다. s는 주소를 아는 변수이다. 2번메뉴는 다음과같다. 할당된곳에 fread로 입력을 받는다. 데이터를 채울 수 있는 부분이다. 여기서 fake chunk를 만들어 줄 수 있다. 3번 메뉴는 다음과같다. 만들어진 chunk를 free해주고 malloc_ptr을 초기화해주는 역할을 한다. 이 3개의 메뉴로 unlink를 호출하게끔 만들면된다. 다음 익스를 보면 이해가 빠르다...
-
HITCON 2016 secret_holderCTF 2016. 11. 23. 12:52
3일동안 삽질해서 풀었다. 진짜 엄청 고생했다. 해찬이와 힙을 같이 공부하고 풀어봤는데 이걸 풀면서 unsafe_unlink에 대해 이해하게됬다. 릭벡터를 못찾아서 하루동안 삽질했는데 간단하게 renew 로 릭이 됬었다 하하... GOT 덮으려고 unsafe_unlink를 1일 동안 삽질했다. 글고 아침에 일어나서 쉘땄다..... keep 메뉴와, wipe 메뉴, renew 메뉴가 존재한다. 각각의 함수에대해서 볼 예정이다. keep 메뉴는 각영역에 할당되었는지 검증을 하고, 각 영역에 할당을 한다. 그리고 INUSE 를 나타내는 전역변수를 1로 초기화한다. wipe 함수는 각각의 청크를 free 해주는 역할밖에 안한다. 그리고 inuse를 0으로 초기화해준다. renew 메뉴는 각 청크를 입력받는다. ..
-
-
Allocate Heap with fgetsHack/Pwnable 2016. 11. 17. 05:35
fgets 는 누구나 알고있듯이 파일 등에서 문자열을 읽어들인다. 3번쨰인자에서 stream을 설정할 수 있는데, 여기서는 fgets에 함수를 사용해서 어떻게 할당되는지를 볼것이다. stack에 변수를 할당하고 이곳에 값을 담는 코드이다. 12345678910#include int main(){ char p[25] = {0,}; printf("Input: "); fgets(p,24,stdin); printf("p: %p",p); return 0;}cs 그냥 배열을 생성하고, fgets로 입력을 받는다. B를 입력해주고나서 스택과 힙의 상황을 확인해볼것이다. 스포를 하자면 heap이 존재한다. heap을 확인해보자 p: p스택주소가 담겨있다. 힙영역에 이값이 쓰이고, 저 스택을 확인해보면 우리가입력한값이 ..
-
Belluminar CTF 2016 후기자유만담 2016. 11. 11. 19:45
HackCAT 이름으로 나갔었다. Belluminar는 POC에서 운영하는, Bellum + Seminar 와 합쳐져 만들어진 CTF임다. 작년엔 벨루미나 나가보고싶다! 이런마음이였는데 막상 하게되니 사람의 욕심은 끝도없는듯... 베이징가고싶었어여ㅠㅠ 벨루미나는 점수를 3가지 방식으로 얻을 수 있어요! 1. CTF 점수 ( 60%) 2. Seminar 점수 ( 30% ) 3. 추가점수 문제 제출 기간 등 ( 10% ) 이 세개의 점수를 총합해 점수를 얻게되는데, CTF 점수는 당연히 문제풀이를 통해 점수를 얻고, Seminar에선 각자 팀에서 만든 문제에대한 풀이를 하고 그 문제를 서로 상호평가하여 매기는 점수에요! 벨루미나 CTF가 특이한점은 운영팀에서 문제를 출제하는것이 아니라 각자 팀에서 문제를 2..
-
[Heap Exploit] Unsafe_unlink - how2heap verHack/Pwnable 2016. 11. 8. 02:31
12345678910111213141516171819202122232425262728293031323334#include #include #include #include uint64_t *chunk0_ptr; int main(){ int malloc_size = 0x80; //we want to be big enough not to use fastbins int header_size = 2; chunk0_ptr = (uint64_t*) malloc(malloc_size); //chunk0 uint64_t *chunk1_ptr = (uint64_t*) malloc(malloc_size); //chunk1 chunk0_ptr[2] = (uint64_t) &chunk0_ptr-(sizeof(uint64_t)*..