查看: 314|回复: 4

[转载图文] Shellcode奇技淫巧汇总

[复制链接]
发表于 2020-4-3 10:56:46 | 显示全部楼层 |阅读模式
整理了一些 shellcode 以及一些有漏洞的程序 , 需要学习的小伙伴如果有兴趣可以参考一下
1. 清空通用寄存器 eax
;=========================================
; 方案一
;=========================================
mov eax,0 ; 直接移动
;=========================================
; 方案二
;=========================================
xor eax,eax ; 异或
;=========================================
; 方案三
;=========================================
shr eax,8 ; 右移 8 位
;=========================================
; 方案四
;=========================================
and eax, 0
;=========================================
; 方案五
;=========================================
; 还有一种思路是 : (但是比较占空间)
mov eax, 01010101B
mov ebx, 10101010B
and eax, ebx
2. 获取内存地址 (例如自己写的 "/bin/sh" 的地址)
;=========================================
; 方案一
;=========================================
global _start:
  _start:
    jmp target
  joker : 
    pop eax
    ; Your code
    ; ...
    ; ...
  target:
    call joker
    db "/bin/sh", 0
;=========================================
; 方案二
;=========================================
xor eax, eax
push eax ; 字符串以 0 结尾
; "/bin/sh" -> 0x2f 0x62 0x69 0x6e 0x2f 0x2f 0x73 0x68
push 68732f2fH
push 6e69622fH
mov ebx, esp
3.消除 0 字节
利用低位寄存器例如 al , ah , 进行操作
例如 : 
  mov eax, 0AH
可以写成 : 
  ; 首先清空 eax
  ; 可以用到第一节中的清空寄存器的指令中的任意一个
  shr eax, 8
  mov al, 0AH
4. 获取栈顶指针地址
mov ebx, esp
5. 如何在字符串后添加 \0
首先利用 push [立即数(非0)]
这样得到的机器码只有两位 , 但是真正执行的时候被 push 到栈上的数据是 4 字节
然后再 push 字符串
6. 将 edx 设置为 0
cdq 
; 该指令先把edx的每一位置成eax的最高位
; 若eax>=0x80000000, 则edx=0xFFFFFFFF
; 若eax<0x80000000,则edx=0x00000000
; 再把edx扩展为eax的高位。
7. 消除在 push 较小的数的时候 push 指令中的 0 字节
例如 : 
push 0BH
字节码为 : 68 0B 00 00 00
我们可以使用下面的指令来消除 0 字节 : 
xor eax, eax
mov al, 0BH
push eax
这样得到的字节码为 : 
31 c0
b0 0b
50   
6a 0b
8. 同时清空 RAX, RDX 和 RSI (64位)
xor esi,esi
mul esi


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
发表于 2020-4-3 15:18:41 | 显示全部楼层
收藏了,感谢分享

0

主题

143

帖子

0

精华

中级会员

Rank: 8Rank: 8

学币
369
荣耀
0
rank
0
违规
0

    发表于 2020-4-4 16:55:20 | 显示全部楼层
    啥也不说了,楼主就是给力!

    点评

    啥也不说了,楼主就是给力!  详情 回复 发表于 2020-4-5 13:54

    0

    主题

    2

    帖子

    0

    精华

    初级会员

    Rank: 4

    学币
    2
    荣耀
    0
    rank
    0
    违规
    0

      发表于 2020-4-5 13:54:14 | 显示全部楼层
      monkeyman 发表于 2020-4-4 16:55
      啥也不说了,楼主就是给力!

      啥也不说了,楼主就是给力!

      0

      主题

      143

      帖子

      0

      精华

      中级会员

      Rank: 8Rank: 8

      学币
      369
      荣耀
      0
      rank
      0
      违规
      0

        发表于 2020-4-8 12:35:23 | 显示全部楼层
        感谢分享,我会认真学习的!
        快速回复 返回顶部 返回列表