Reference list

Helpful references

Unix Commands

cat:

Concatenate files and print the result (or print a single file)

cd:

Change the working directory

echo:

Display given text

(gdb) ba:

Print a backtrace

(gdb) break:

Set a break point

(gdb) continue:

Continue execution after breaking

(gdb) disassemble:

Disassemble a block of instructions

(gdb) print:

Print a value

(gdb) quit:

Quit

(gdb) run:

Run program you have loaded in GDB

(gdb) stepi:

Step forward one instruction

(gdb) x:

Examine the contents of memory

git add:

Designate one or more files as part of the next commit

git clone:

Make a local copy of a Git repository

git commit:

Perform a commit and record an associated message

git diff:

Display the changes made since the last commit

git log:

Print the history of commits to a project

git push:

Push committed changes back to the original repository

ls:

List directory contents

man:

Display a Unix manual page

nc (netcat):

Concatenate and redirect sockets

objdump:

Display information about object files, including disassembly

pwd:

Print working directory

C Elements

argc:

An integer indicating the number of command-line arguments received by the program

argv:

An array of pointers to the program’s command-line arguments

char:

A single-byte type capable of holding a character, e.g., ‘a’, ‘g’, or ‘Z’

float:

A floating-point type that approximates a real number

for:

Iterates until a condition is no longer met

int:

An integer type from -n to n-1

+:

The addition operator

=:

The assignment operator

/:

The division operator

%:

The modulus (remainder) operator

*:

The multiplication operator

-:

The subtraction operator

Go Elements

char:

A single-byte type capable of holding a character, e.g., ‘a’, ‘g’, or ‘Z’

float:

A floating-point type that approximates a real number

for:

Iterates until a condition is no longer met

int:

An integer type from -n to n-1

os.Args:

A slice of command-line arguments

+:

The addition operator

=:

The assignment operator

/:

The division operator

%:

The modulus (remainder) operator

*:

The multiplication operator

-:

The subtraction operator

Java Elements

args:

An array of command-line arguments

char:

A single-byte type capable of holding a character, e.g., ‘a’, ‘g’, or ‘Z’

float:

A floating-point type that approximates a real number

int:

An integer type from -n to n-1

+:

The addition operator

=:

The assignment operator

/:

The division operator

%:

The modulus (remainder) operator

*:

The multiplication operator

-:

The subtraction operator

Python Elements

for:

Iterates over the elements of a sequence

sys.argv:

An array of command-line arguments

+:

The addition operator

=:

The assignment operator

/:

The division operator

//:

The integer division operator

%:

The modulus (remainder) operator

*:

The multiplication operator

-:

The subtraction operator

C Functions

connect:

Connect a socket to an address

execvp:

Execute a file

exit:

Terminate the current process

fork:

Create a new process by duplicating the calling process

freeaddrinfo:

Free the address object provided from a getaddrinfo call

gai_strerror:

Print the error string associated with a failed getaddrinfo call

getaddrinfo:

Obtain one or more addresses for a host

printf:

Print to standard output with formatting

recv:

Receive a message from a connected socket

socket:

Return a socket abstraction able to send or receive communication messages

wait:

Wait for a child process to stop or terminate

Go Functions

bufio.NewReader:

Create a buffered reader from a non-buffered reader such as a connection

bufio.Reader.ReadString:

Read up to and including the first occurrence of a delimiting string

fmt.Println:

Print to standard output

net.Dial:

Create a connection to the given address

Java methods

System.out.println:

Print to standard output

Python Functions

print:

Print to standard output

socket.socket:

Return a socket abstraction able to send or receive communication messages

SocketType.connect:

Connect a SocketType object to an address

SocketType.recv:

Receive a message from a connected SocketType object

References

  • [1] Aleph One (1996) Smashing the stack for fun and profit. Phrack Magazine 7 (49), pp. 14.
  • [2] R. H. Arpaci-Dusseau and A. C. Arpaci-Dusseau (2018-08) Operating systems: three easy pieces. 1.00 edition, Arpaci-Dusseau Books. External Links: Link
  • [3] E. Buchanan, R. Roemer, H. Shacham, and S. Savage (2008) When good instructions go bad: generalizing return-oriented programming to RISC. In Proceedings of the 15th ACM Conference on Computer and Communications Security, CCS ’08, New York, NY, USA, pp. 27–38. External Links: ISBN 978-1-59593-810-7
  • [4] S. Chacon and B. Straub (2014) Pro git. 2nd edition, Apress, Berkely, CA, USA. External Links: ISBN 9781484200773
  • [5] I. Corporation (2016-09) Intel 64 and ia-32 architectures software developer’s manual: volume 2. Intel Corporation.
  • [6] I. Corporation (2016-09) Intel 64 and ia-32 architectures software developer’s manual: volume 3. Intel Corporation.
  • [7] C. Cowan, C. Pu, D. Maier, H. Hintony, J. Walpole, P. Bakke, S. Beattie, A. Grier, P. Wagle, and Q. Zhang (1998) StackGuard: automatic adaptive detection and prevention of buffer-overflow attacks. In Proceedings of the 7th USENIX Security Symposium, Berkeley, CA, USA.
  • [8] A. A. A. Donovan and B. W. Kernighan (2016) The Go programming language. Addison-Wesley. External Links: ISBN 0134190440
  • [9] A. Downey and C. Mayfield (2016) Think Java: how to think like a computer scientist. O’Reilly Media. External Links: ISBN 9781491929513, Link
  • [10] P. S. Foundation (2019) The Python tutorial. Python Software Foundation.
  • [11] B. Hall (2011) Beej’s guide to network programming using internet sockets. Jorgensen Publishing. External Links: Link
  • [12] B. W. Kernighan and R. Pike (1984) The UNIX programming environment. Prentice Hall, Inc.. External Links: ISBN 013937681X
  • [13] B. W. Kernighan and D. M. Ritchie (1988) The C programming language. 2nd edition, Prentice Hall Professional Technical Reference. External Links: ISBN 0131103709
  • [14] B. Pfaff, A. Romano, and G. Back (2009) The Pintos instructional operating system kernel. In Proceedings of the 40th ACM Technical Symposium on Computer Science Education, SIGCSE ’09, pp. 453–457.
  • [15] D. M. Ritchie and K. Thompson (1974) The UNIX time-sharing system. Communications of the ACM 17 (7), pp. 365–375. External Links: ISSN 0001-0782
  • [16] scut / team teso (2001-09) Exploiting format string vulnerabilities. Note: Version 1.2
  • [17] H. Shacham (2007) The geometry of innocent flesh on the bone: return-into-libc without function calls (on the x86). In Proceedings of the 14th ACM Conference on Computer and Communications Security, CCS ’07, New York, NY, USA, pp. 552–561. External Links: ISBN 978-1-59593-703-2