Using radare2 to pwn things
May 14, 2015
While more and more people are using radare2 during ctf, in the same time we’ve got more and more complains that there is not enough documentation about radare2.
This article’s goal is to make a small cheat-sheet when it comes to pwn things with our beloved piece of software.
Keep in mind that:
- Every character has a meaning (
wstands for write,pstands for print, …) - Every command can be a succession of character (
pdfstands forp: print,d: disassemble,f: function - Every command is documented with ? (
pdf?,???, …)
Search
- search a string in memory/binary:
/ yourstring - search for rop gadgets:
/R - search for rop gadgets with a regexp:
/R/ - show strings:
iz - find writeable sections:
iS | grep perm=..w - find executables sections:
iS | grep perm=...x - find xref of a function:
axt [offset|yourfunctioname] - list libc imports:
is~imp. - generate cyclical pattern:
ragg2 -P $SIZE -r - find offset of pattern:
wopO $VALUE - change the deep of the rop-search:
e search.roplen = 4 - computing how far a symbol is from where you currently are:
fd [offset|yourfunctioname] - find protections in binary:
i~canaryfor canariesi~picfor Position Independent Codei~nxfor non-executable stack
Emulation
- initialize emulation:
aei - deinitialize emulation:
aed - emulate a whole function:
aef - single-step:
aes
Display
- hexdump:
pxw [len] [@ offset] - get offset of a symbol:
?v sym.main - disassemble a whole function:
pdf @ [offset|yourfunctioname] - list functions:
afl - get in which function an address is used:
afi address~fcnafito get function information~fcnto grep for “fcn”- append
jto get a JSON output :ij,pdfj,/Rj…
- calculus of offsets:
? 0x20 + 0x4028a0
Debugger
- connecting the gdbserver
r2 -D gdb -d [binary] gdb://[address:port](full doc) - connecting the remote windbg
r2 -D wind -d [binary] windbg://[pipe address](full doc) - show registers:
dr= - emuling strace:
dcs* - disassemble at register
reg:pd [len] @ [reg]
Misc
- emulating socat:
rarun2 program=./plzpwnme.exe listen=4444You should really take a look atrarun2's manpage.
Feel free to tell us if you think that we missed something, and good luck for the Defcon CTF Quals!