首先对分析过程和exp格式表示感谢~!对新手非常友好,注释一看就能懂,复现也非常容易~
想请问一下,gadgets数组是怎么得到的?我跟踪exp猜测是先在libc中找execve函数的引用
Direction Type Address Text
Up p sub_3A850+444 call execve
Down p fexecve+62 call execve
Down p execv+1F call execve
Down p execle+B5 call execve
Down p execle+148 call execve
Down p execl+C3 call execve
Down p execl+159 call execve
Down p execvpe+41 call execve
Down p execvpe+10C call execve
Down p execvpe+246 call execve
Down p execvpe+2E3 call execve
Down p sub_D0330+7B1 call execve
Down p sub_D4580+8E call execve
Down p sub_D4630+268 call execve
Down p sub_D4630+5FA call execve
Up o LOAD:00009FA8 Elf32_Sym <offset aFexecve+1 - offset byte_D618, offset execve, 26h, \; "execve"
拿第一个举例,戳进去再把调用之前,push之后的复制下来,是这样吗
.text:0003AC5C push 0
.text:0003AC5E push [esp+164h+var_154]
.text:0003AC62 push 2
.text:0003AC64 call sigprocmask
.text:0003AC69 mov eax, ds:(environ_ptr_0 - 1B2000h)[esi]
.text:0003AC6F add esp, 0Ch
.text:0003AC72 mov ds:(dword_1B3620 - 1B2000h)[esi], 0
.text:0003AC7C mov ds:(dword_1B3624 - 1B2000h)[esi], 0
.text:0003AC86 push dword ptr [eax]
.text:0003AC88 lea eax, [esp+164h+var_138]
.text:0003AC8C push eax
.text:0003AC8D lea eax, (loc_15BA08+3 - 1B2000h)[esi]
.text:0003AC93 push eax
.text:0003AC94 call execve