목록CTF (23)
y0u_bat
SECCON 2016-tinypad - 300pt House of einherjar 라는 기술을 이용해서 풀어보았습니다.오랜만에 상당히 재미있게 풀었습니다 ㅎㅎ einherjar 기술외 unsafe_unlink를 통해서도 풀 수 있습니다. 1. 보호 기법 체크NX, Cannry, Full RELRO가 걸려있습니다. 2. Libc & heap base Leak Vulnerability unsorted bin을 통해서 libc_main_arena+88를 leak 해서 libc_base를 구 할 수 있습니다.그리고 fastbin을 이용하여, heap base addrss를 구 할 수 있습니다. memo를 총 4개까지 작성 가능합니다.그리고 최대 0x100까지 할당 할수있습니다.이렇게 할당하면 크기와 할당한청크..
Bitsctf Command_Line - 20pt 풀이 할 필요도 없을정도로 쉬운 문제이긴 한데 그냥 풀이 해봅니다.. Buffer Overflow Vulnerability 띠용!..취약점이 대놓고 있고, v4 주소까지 준다.심지어 문제에 보면 no ASLR 그냥 주소 받아다가 적어 넣으면 된다. 그냥 "\x90"*24 + (v4+36 address) + "\x90"*20 + (shellcode 27byte) 이런식으로 페이로드 구성했다. Exploit.py from pwn import *s = remote("172.16.174.131",4444)stack_leak = 0x7fffffffecc0 + 36payload = "\x90"*24payload += p64(stack_leak)payload +=..
Plaid CTF - prodmanager 1. 보호 기법 2. User After Free + Flag LeakUAF를 이용해서 더블링크드리스트의 포인터를 조작하여, Print하는 부분의 주소를 flag주소로 변경하여, Flag를 leak하게 하면 된다. flag_get 함수를 보면 flag.txt를 읽어와서 0x804c3e0 주소에 write하는것을 볼 수 있다. Create_product함수에서는 상품을 생성하는데, 이름이랑, 가격을 받아서 malloc(76)한 곳에 sub_8048D54 함수내부에서 복사 해준다.그리고 sub_8048DC8은 링크드리스트 설정하는 부분이다.print 하기 위해서는 상품을 3개 만들고 product manager에 최소 3개를 add 해줘야지 그때부터 print 할 ..
Christmas CTF - Who is solo? 1. 보호기법 2. unsorted bin attack + 64bit ROP 이문제를 보면 정상적으로 password에 입력을 하지 못하는데, unsorted bin attack을 통하여 libc_main_aerna+88를 password에 write 해서, read(0,&v9,2000) 을 실행시켜, ROP를 진행 할 수 있게 된다. malloc_ 함수에서는 원하는 사이즈만큼 할당 가능하고 해당 위치에 write 가능하다. malloc(1,200)malloc(2,200) 이렇게 2번 할당한다음, 1번 청크를 free 해주면, unsorted bin이라서 fd bk 위치에 libc_main_arena+88가 write 된다.그다음 숨겨진 메뉴인 modi..
Defcon 2014 - Babyfirst heap 1. 보호기법 2. Double Free bug + heap Overflow v10 = randrange(0x200,0x500) 랜덤한 크기로 malloc 하다, 11번째에 260 size로 malloc 하는것을 볼 수 있다.v9 = get_my_line(&v8,0x1000) 최대 0x1000만큼 입력 할 수 있는것을 볼 수 있다. 이부분에서 heap overflow가 발생한다. 그리고 마지막부분에 연속적으로 free 하는 것을 볼수있다.연속적으로 free 하므로, 병합하면서 unlink가 호출되는데, 이부분에서 double free bug 취약점이 일어난다.이전청크가 free되어 prev_inuse가 0으로 세팅되어 있는 상태에서 현재 청크를 free..
HolyShield diary - 400pt 1. 보호기법 2. Libc Leak Vulnerability Plan 메뉴에서 malloc할당후 free를 통해 libc_main_arena+88 가 fd, bk에 작성된다.print_plan 함수로 leak 하면 된다. delete_plan 함수를 보면, select에 100을 입력하고, *(src+6) 이 3이야 free 할수있는것을 볼수있다.src+6는 프로그램을 처음 실행시킬때 입력한 gender 부분이다. 이렇게 plan_list를 free 시키고 print_plan 함수를 호출시켜 leak 하면 된다. 3. Interger Overflowgame 함수에서 인터져 오버플로우가 일어난다. if(*betting_money
HITCON Secret Holder unsafe_unlink 관련된 문제이다. Menu introduce 메인함수에 3가지 메뉴가 있다.keep(); wipe(); renew() 각 메뉴 기능에 대해서 간단하게 설명하자면, keep() - 할당하는 함수. wipe() - free 하는 함수 renew() - 청크 수정하는 함수. Fake_Chunk fake_chunk를 만들기 위해 huge_chunk(3)를 썻다. keep(1,"A"*8) # 0x~~~10keep(2,"B"*8)# 0x~~~40keep(3,"C"*8) wipe(1) wipe(2)wipe(3) # 병합keep(3,"A"*8) # 0x~~~10 1번과 3번이 같은 청크주소를 가르키고 있다. 그러나 1번은 free하면서 small..
[BCTF] BCloudhouse of force 관련 문제이다.메인함수이다. setting() 이랑 new_note, modify_note 함수만 주의 깊게 보면 된다. Leak Vulnerabilitysetting() 함수안에는 get_name과 get_org_host라는 함수로 입력을 받는다. get_name이라는 gets_(sub804868D)라는 함수로 s에 입력을 받는다.그리고 v2 에 malloc 으로 0x40만큼 할당한다. 그러면 s와 v2의 스택 상황을 보면, null 바이트 없이 딱 달라붙어 있다.strcpy(v2,&s)를 할 경우, 힙 청크 상태는 이렇게 된다. print_name(v2); 함수로 v2를 출력하는데 이때 heap 주소가 leak 된다. Top Chunk Overwrit..
2016 Whitehat contest Malloc 2016 화이트햇콘테스트 예선전 malloc 풀이 이 문제는 fastbin구조에서 더블프리버그를 이용하여 fd를 조작해, 푸는 문제이다. 간단히 메뉴를 설명하자면, 1번은 malloc 하는 메뉴 2번은 free하는 메뉴 3번은 print하는 메뉴 메뉴 4번은 modify 하는 메뉴이다. 내가 푼 방법은 1번 메뉴만 잘보면 된다. how2heap fastbindupinto_stack.c와 같은 방법으로 풀었다. 32 이하만큼 원하는 주소로 할당이 가능하고 write가 가능하다. 스택쪽으로 주소를 돌리고, bof를 하여 system("cat /home/easy_malloc/flag")쪽으로 $pc를 바꾸면 된다. exploit.py from socket i..