쓸 건 많지만 차차 정리하고 일단 생각나는 것부터 적어본다:)
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 |