Pwnable에는 많은 기법이 있는데, 그중에서 자주 쓰이는 기법들 중 Int Overflow라는 것이 있다.그대로 말하면 정수타입에서 일어나는 Overflow취약점이다. 가령 아래와 같은 코드가 있다. (shell-storm.org에서 받을 수 있음) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211..
GITS 2012 Pwnable 200Pts 1234567891011~> file ./GITS2012_pwnable200 ./GITS2012_pwnable200: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, BuildID[sha1]=c53d1dc1e47bd86dc63c9fba66f4a5c41cf2096d, stripped ~> checksec --file ./GITS2012_pwnable200 RELRO STACK CANARY NX PIE RPATH Partial RELRO No canary found NX disabled No PIE N..
푸는데 5시간 정도 걸린 문제. 분명 그렇게 오래 걸리면 안될 쉬운 문제인데삽질 + 불운 + 귀찮음 덕분에 굉장히 많이 걸렸다.. 123456789# file exploit400 exploit400: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x105e30fbeade2b06f9d82a9ff924871db71cae3c, stripped# checksec --file ./exploit400 RELRO STACK CANARY NX PIE RPATH No RELRO Canary found NX enabled No PI..
Volga CTF 2014 exploit300 12345678910111213141516171819202122232425# Location: /home/john/exploit300.py from sys import modulesmodules.clear()del modules _raw_input = raw_input_BaseException = BaseException_EOFError = EOFError # he-he__builtins__.__dict__.clear()__builtins__ = None print '>>> Just escape me...' while 1: try: d = { 'x' : None} exec 'x='+_raw_input()[:500] in d print 'ret:', d['x'..
Pwnable (System Hacking) 워게임 사이트, 문서 정리 [2015, 1, 28] 처음 제작 WARGAME HackerSchool - FTZ워게임 유형 : 원격 접속접속 : ssh ftz.hackerschool.org홈페이지 : http://www.hackerschool.org/Sub_Html/HS_Community/index.html -> Pwnable과 Linux에 처음 접해본다면 꼭 봐야 할 워게임 기본적인 트레이닝 과정과 워게임을 푸는 Level 과정 제공 Level과정은 20까지 있고 Linux기본, BOF, RTL, FSB등 Pwnable 기술 습득 가능 Hackerschool - LOB (RedHat)워게임 유형 : VM 이미지 제공 -> 조금 더 어려운 FTZ라고 생각하면 됨..
문제를 맞추는 게임을 제공함.첫번째 문제를 틀리면 두번째 기회가 주어지는데 그때 오버플로우가 일어남 12345678910111213141516171819202122232425262728293031323334int __cdecl vuln(int fd){ char buf_124; // [sp+14h] [bp-4B4h]@1 //size 124 char v3; // [sp+90h] [bp-438h]@4 char s2; // [sp+490h] [bp-38h]@4 int v5; // [sp+4B8h] [bp-10h]@1 int v6; // [sp+4BCh] [bp-Ch]@1 v6 = 0; v5 = 0; sques(fd, 1); v5 = recv(fd, &buf_124, 124u, 0); addn(&buf_124, ..
mprotect()의 원형 int mprotect(void *addr, size_t len, int prot); 원래 일반적인 ROP기법을 써서 system() 함수를 실행시키는 방법을 주로사용했었다. 그런데 NX-Bit가 걸려있어도 mprotect() 함수를 실행시켜서 Shellcode를 실행시킬 수 있다고 한다. mprotect()함수는 주어진 메모리 영역의 권한을 바꿀 수 있도록 해준다.그렇기 때문에 prot 인자에 7을 주게 되면 RWX권한이 모두 들어가게 된다. + 또한 주의할 점은 void *addr 부분이 0x1000의 배수가 되어야 한다고 한다.+ 사용한 Binary는 예전에 포스팅 했었던 PlaidCTF rop... 이다.http://err0rless313.tistory.com/entry..