PWN
文章平均质量分 54
RKAnjia
此人很懒,什么都没写。
展开
-
栈在程序中的应用、栈溢出
20.11.23堆的概念C表述栈在程序中的应用栈溢出堆的概念C表述栈在程序中的应用我的理解:在程序运行过程中,当要调用某个子函数时:将主函数的相关参数压入栈中、将call指令的下一条指令的地址作为返回地址压入栈中、将当前ebp入栈、使ebp指向esp所指的位置(重新定位栈底)、将esp指向的地址+xxxH(在栈上分配xxx字节的空间)(可选)、将某些寄存器中的值入栈(可选)、将某些寄存器中的值出栈(可选)、使esp指向ebp所指向的位置(恢复esp同时回收局部变量的空间)、弹出之前压入的ebp地址原创 2020-11-23 23:19:31 · 328 阅读 · 0 评论 -
rop、64位程序中参数传递及栈溢出利用
ctf64位程序中参数传递及栈溢出利用rop64位程序中参数传递及栈溢出利用32位程序参数传递是直接弹出栈顶元素作为参数,而64位程序通过edi寄存器传参;因此在栈溢出漏洞利用的步骤为:找到“pop edi\rdi;ret;”语句、system函数和“bin/sh”字符串的地址,输入数据:【填满栈空间的数据+覆盖edb的数据(32位大小为4h,64位大小为8h)+“pop edi\rdi;ret;”语句的地址+“bin/sh”字符串的地址+system函数的地址】。具体执行过程:子函数调用结束时,原创 2020-11-24 23:18:59 · 931 阅读 · 1 评论 -
泄露libc库、shellcode、__libc_csu_init
level4、第四届蓝帽杯pwn-slient泄露libcwrite函数输出地址puts函数输出地址puts函数输出完地址后没有其他输出puts函数输出完地址后还有其他输出注意shellcode如何写入shellcode?如何使得shellcode执行?_libc_csu_init泄露libc(有很多是摘自link)write函数输出地址当题目程序中的输出函数是write函数时,我们就可以利用write函数把write函数的真实地址输出出来。下面给出write函数的DynELF写法模板(64位):原创 2020-12-21 21:02:01 · 795 阅读 · 0 评论 -
libc泄露以及偏移
payload 一般是填充字符(栈的大小)+ ‘aaaa’(覆盖EBP)+ p32(write_plt) + p32(start)(返回地址) + p32(1)+ p32(write_got)+p32(4)后面三个是write函数的参数 write(1,‘write_got’,4) 4代表输出4个字节,write_got则为要泄露的地址write函数原型是write(fd, addr, len),即将addr作为起始地址,读取len字节的数据到文件流fd(0表示标准输入流stdin、1表示标准输出流s原创 2021-03-23 19:47:13 · 702 阅读 · 0 评论 -
对payload以及函数传参的进一步理解
pwnpayload32位程序传参64位程序传参payload模板:payload=“a“*0x88p.sendline(payload)在模板里是先编造好payload,再在程序需要输入时用sendline()将payload向程序输入,程序接收payload对某些变量赋值。例如:read(0,&buf,0x200ull);在与靶机交互时,靶机执行到read函数时,会需要我们输入,这时我们输入payload,程序会对buf字符串赋值为88个a。32位程序传参64位程序传参原创 2021-03-23 19:50:57 · 2915 阅读 · 1 评论