본문 바로가기

시스템/등드등

pwntools 간단 정리

쓸 건 많지만 차차 정리하고 일단 생각나는 것부터 적어본다:)


1. 접속


nc


p=remote(IP,PORT)

p=remote(str,int) = ('localhost',1234)


local


p=process('PATH')

p=process(str) = ('./test')


ssh


p=ssh(username, IP, PORT, password)

p=ssh(str,str,str,str)

  =('사용자이름', 'IP', port=포트번호, password='비밀번호')

  =('user', 'localhost', port=1234, password='pw')

p2 = p.run('/bin/sh')


2. 패킹


p32(패킹할 것) : 32bit little-endian으로 패킹해주는 함수

big-endian 옵션 : p32(0x12345678, endian='big')

p64 : p32와 비슷하게 64bit로 패킹해줌


ex) p32(0x12345678) => '\x78\x56\x34\x12'


3. 언패킹


u32 : 32bit little endian을 unpack해주는 함수

big-endian 옵션 : p32('\x78\x56\x34\x12', endian='big')


ex) u32('\x78\x56\x34\x12') -> 0x12345678


4. libc


ELF : 아키텍처나 적용되어 있는 보호기법을 보여주고, plt, got등 필요한 가젯들을 찾아줌

e= ELF('./파일이름')


e.address : 매핑된 시작 주소

e.symbols['puts'] : puts 오프셋

e.plt['puts'] = e.symbols['plt.puts'] : puts@plt

e.got['puts'] = e.symbols['got.puts'] : puts@got

e.bss : bss섹션 주소

list(e.search('/bin/sh'))[0] : 특정 문자열 찾아 주소 가져오기

e.checksec() : 다시 보호기법 확인 (처음 ELF()시작할 때 보호기법 출력됨)


5. rp++


rp++ -f 파일명 -r 4 | grep pop


pop이 있는 4개 연속 godget 출력


rp++ 바이너리 다운 : https://github.com/0vercl0k/rp/downloads


6. checksec


checksec --file 파일명


실행파일의 보호기법 출력

'시스템 > 등드등' 카테고리의 다른 글

웹 메일 및 채팅 앱 구현  (0) 2019.03.12
Wannacry 1차 정리본  (0) 2019.01.26
ELF 파일 구조  (3) 2018.11.20
간단한 정리  (0) 2018.11.19
Format String Bug  (0) 2018.11.10