본문 바로가기

처음 만드는 티스토리

(16)
Codegate 2017 - babypwn 도라애몽, Nuclear 보다 훨씬 쉬웠던 문제이다. 버퍼를 출력해주는 구문에서 버퍼와 연관된 카나리를 바로 출력할 수 있었으며, system 함수도 사용하고 있어서(IDA 및 elfsymbols 확인) 바로 rop 공격이 가능하였다. 123456789101112131415161718192021222324252627282930313233343536#!/usr/bin/pythonfrom pwn import *context(arch='x86', os='linux', endian='little') e = ELF('./babypwn')rop = ROP(e)ip = 'localhost'port = 8181 #leak canaryr = remote(ip, port) print r.recv(4096)r.send('1..
Codegate 2014 Nuclear Angry doraemon 과 비슷한 rop 문제이다. pwntools 를 이용해서 좀 쉽게 풀었다. 근데 pwntools e.symbols['send'] - e.symbols[system] 이 약간 오류가 있는거 같다.. 그냥 gdb 상에서 구하는게 좋을거 같다 gdb-peda$ p send$3 = {} 0xf7f9d500 gdb-peda$ p system$4 = {} 0xf7e12da0 gdb-peda$ p send-system$6 = 0x18a760 nuclear의 취약점은 start_routine에서 사용하고 있는 recv() 에서 발생한다. 버퍼의 크기는 0x200 인데, 0x512 만큼 받아버리니.. 아마 개발자 실수인것 같다 (0x200은 10진수로 하면 512) 처음에 passcode를 요..
처음만드는 티스토리 안녕하세요 "처음만드는 티스토리" 주인입니다. 하루하루 소소한 일상을 여기 담으려고 합니다.
basic-rop 몇 년전 Null@root 신입회원 테스트때 나온 pwnable 문제이다. 이때는 실력이 없어서 2차 밖에 통과하지 못했는데.. 실력을 더 쌓아서 다시 한번 도전해보고 싶긴 하다. 지금은 pwntools를 알게되서 더 쉽게 풀수있음.. (이땐 몰랐음 ㅠ) 먼저 권한을 확인하자. gdb-peda$ shell ps PID TTY TIME CMD 5998 pts/17 00:00:00 sudo 5999 pts/17 00:00:00 gdb 6067 pts/17 00:00:00 pwn1 6076 pts/17 00:00:00 psgdb-peda$ shell cat /proc/6067/maps08048000-08049000 r-xp 00000000 08:01 960117 /home/sunghyun/Desktop/pwn..
Codegate 2014 Angry_Doraemon 예전부터 풀고 싶었지만.. 바쁘다는 핑계로 이제서야 풀이를 남긴다. 사실 내가 푼건 아니고 hyunmini 블로그 write up을 보고 따라해 보았다. 아직은 recv()에서 얼마나 받아오는지 감이 잘 안잡힌다.. 자꾸 숫자를 바꿔보아도 자꾸 엉키기만 한다. 다음번 풀때는 하나씩 일일이 확인해 가면서 풀어야겠다. 또 마지막 exploit 할때 write 파일 디스크립터를 4로 한 것도 아직 이해가 안간다. fork 를 한번, 두번, 세번 하니까 5가 되야 맞을 같은데.. 4로 해야되네 (?) 일단 작성해 놓은 poc 코드는 남겨 놓는다. 그리고 pwntools ROP 클래스를 이용하면 엄청나게 쉽게 가젯을 구성할 수 있다. (코드 참조) 123456789101112131415161718192021222..
내가 살고 있는곳 햇살이 아주 좋은 곳이예요 :)