注意一定要用docker或者虚拟机,否则没有符号表会特别坐牢!执行p _rtld_global。看到那两个rtld_lock_default_lock_recursive和rtld_lock_default_unlock_recursive吗,就是他们两个。我们可以修改他们的内容,从而作为exithook进行调用(直接call)。把后面的东西复制过来p &xxx就可以查看其地址了。
注意这个2312是十进制。[img=720,384.2696629213483]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202309191518191.png[/img]
例如修改_rtld_global+2312为"/bin/sh\x00"[img=720,473.8088012139605]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202309191518192.png[/img]
注意存的是偏移-8的地址,也就是如果要改的话要改成目标-8。[img=720,286.9209809264305]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202309191518194.png[/img]
注意存的是偏移-8的地址,也就是如果要改的话要改成目标-8。[img=720,161.32231404958677]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202309191518195.png[/img]
在x86汇编中,je 指令的作用是:回溯发现是从link_map+0x120取来的地址,也就是说想要这里为0,就把那里的地址指向为0的地方即可!不过也要注意,这里取的是地址+8,也就是我们要改成目标地址-8改进去。这里直接找bss段之类的即可。
- 检查零标志位(ZF)是否被设置为 1。
- 如果零标志位被设置为 1,将进行跳转到指定的目标位置。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |