小编Bla*_*aat的帖子

覆盖返回地址简单格式字符串漏洞利用

是的,已经存在相当多的类似问题(5037601,19166698,4855162,14505995,5052648,13409508,7745146,7459630;对不起,没有足够的代表超过2个链接),是的,有一些很好的文章解释这种东西(点击,点击,http://codearcana.com/posts/2013/05/02/introduction-to-format-string-exploits.html).我已经阅读了它们,我认为我得到了一般的想法,但我仍然失败,成功地利用了我能想到的最简单的训练玩具示例.

#include <stdio.h>

void f(char* a)
{
    printf("a: %p\n", &a);
    printf(a);
    return;
}

void main(int argc, char** argv)
{
    f(argv[1]); //please ignore the lack of any check
    return;
}
Run Code Online (Sandbox Code Playgroud)

是的,堆栈是可执行的,是的,内存布局随机化被禁用.每次执行都给我相同的地址a.我可以提供它,例如$ ruby -e 'print "AAAA"+("%08x."*16)',这导致:

a: 0xbfffece0
AAAAbfffece0.bfffecf0.b7fd7ff4.00000000.00000000.bffffcf8.080484b0.bfffecf0.00000fff.b7fd8420.00000000.41414141.78383025.3830252e.30252e78.252e7838.
Run Code Online (Sandbox Code Playgroud)

所以现在我可以看到我的输入最终在内存中.我可以用栈写一个值$ ruby -e 'print "12345%n"+("%08x."*16)',结果如下:

a: 0xbfffece0
12345bfffecf0.b7fd7ff4.00000000.00000000.bffffcf8.080484b0.00000005.00000fff.b7fd8420.00000000.34333231.256e2535.2e783830.78383025.3830252e.30252e78.
Run Code Online (Sandbox Code Playgroud)

显然,我的最终目标可能是这样的<something><NOPs><shellcode>,其中<something>覆盖了返回地址,f以便程序将跳转到NOP底座并执行shellcode.但保存的返回地址的地址现在似乎取决于我的输入,对吧?类似的东西0xbfffece0 - len(input) - 12,假设一个12字节的序幕?也许这个例子毕竟不是最简单的......

我很困惑.有任何想法吗?

c exploit memory-layout

6
推荐指数
1
解决办法
6147
查看次数

了解 Cortex M4 上的周期计数

我正在使用带有 Cortex M4 的 STM32F407,并且通过在DWT_CYCCNT调用我在汇编中实现的函数(C 语言)之前和之后直接读取来测量函数的周期计数。我想了解我得到的结果。

08000610 <my_function>:
 8000610:       f04f 20ff       mov.w   r0, #4278255360 ; 0xff00ff00
 8000614:       f04f 11ff       mov.w   r1, #16711935   ; 0xff00ff
 8000618:       ea81 0100       eor.w   r1, r1, r0
 800061c:       ea81 0100       eor.w   r1, r1, r0
 8000620:       ea81 0100       eor.w   r1, r1, r0
 8000624:       ea81 0100       eor.w   r1, r1, r0
 8000628:       4770            bx      lr
 800062a:       bf00            nop
Run Code Online (Sandbox Code Playgroud)

执行上述(包括函数调用)需要21个周期。当我添加一条eor指令时:

08000610 <my_function>:
 8000610:       f04f 20ff       mov.w   r0, #4278255360 ; 0xff00ff00
 8000614:       f04f 11ff       mov.w   r1, #16711935 …
Run Code Online (Sandbox Code Playgroud)

assembly arm stm32f4discovery cortex-m

3
推荐指数
1
解决办法
2072
查看次数

标签 统计

arm ×1

assembly ×1

c ×1

cortex-m ×1

exploit ×1

memory-layout ×1

stm32f4discovery ×1