171115 杂项-可见字符组成的Shellcode

来源:互联网 发布:金山旗下软件 编辑:程序博客网 时间:2024/06/05 06:51

1625-5 王子昂 总结《2017年11月15日》 【连续第411天总结】
A. JarvisOJ-Basic-Shellcode
B.
题目如下:
这里写图片描述
下载下来打开以后发现是一段正常字符串:

PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIYIhkmKzyCDq4l4FQyBlrRWEahI1tLKT16Pnk1ftLnkPvwlnkW6fhNkan5pNkgF6XPOR8T5HsCivaN19okQSPlKRLvD6DNk3uelNkpTthRXuQ9znk2jEHLK1Ja0FaXkhcTtBink4tlKUQhnvQYotqo0ylnLMTO0SDEWZahOtMwqhG8kXteksLwTdh1e8aLKsja4uQ8kavLKdLrklK0ZeL7qjKLKUTLKuQM8k9bdvDeL1qiSnR5XVIXTOyjENikrphNnrnVnhlBrzHooKOYoyok93u7tOKCNyHzBBSnguLgTcbyxlNKOYoYoMYaUTHphRL2LupQQ0htsFRTn541x3E2Se5T26PyKK8QLTddJlIZFBvyoSeUTLIkrv0oKy8ORpMmlk7Gl6DBrm8SoyoioyoaxrOqh0XwP1xu1Qw1upBbHrmrED3T34qiKOxQLTdEZOyZCaxQmRxgPUp0hpnPn4srRe8BDSo2PT7axqOCWROpophSYpnSo04u83K72Peu70hBpCsqDpF4qHIMXpLQ429k98aEaJr1BF3Ca3bIozp01IPf0Yof5GxAA

之前做过一些Pwn的基础题,对Shellcode也算稍微接触过
Shellcode实际上就是汇编对应的机器码
但是由于机器码大部分都是不可见字符,所以无法直接显示出来

本题直接给了大段的乱码可见字符串,再结合机器码不可见,首先就想到了Base64编码–它的出现就是为了将不可见字符全部转为可见字符嘛

然而解b64发现不仅长度不符合,而且在最后添上等号以后解出来的值转汇编也并没有意义

于是去百度部分字符串,发现了这个
http://blog.csdn.net/instruder/article/details/6050048
Alpha2这个工程是专门将Shellcode编码成可见字符串的(甚至仅有字母和数字)

于是直接调用这个字符串:

int main(void){    int x;    char a[] = "PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIYIhkmKzyCDq4l4FQyBlrRWEahI1tLKT16Pnk1ftLnkPvwlnkW6fhNkan5pNkgF6XPOR8T5HsCivaN19okQSPlKRLvD6DNk3uelNkpTthRXuQ9znk2jEHLK1Ja0FaXkhcTtBink4tlKUQhnvQYotqo0ylnLMTO0SDEWZahOtMwqhG8kXteksLwTdh1e8aLKsja4uQ8kavLKdLrklK0ZeL7qjKLKUTLKuQM8k9bdvDeL1qiSnR5XVIXTOyjENikrphNnrnVnhlBrzHooKOYoyok93u7tOKCNyHzBBSnguLgTcbyxlNKOYoYoMYaUTHphRL2LupQQ0htsFRTn541x3E2Se5T26PyKK8QLTddJlIZFBvyoSeUTLIkrv0oKy8ORpMmlk7Gl6DBrm8SoyoioyoaxrOqh0XwP1xu1Qw1upBbHrmrED3T34qiKOxQLTdEZOyZCaxQmRxgPUp0hpnPn4srRe8BDSo2PT7axqOCWROpophSYpnSo04u83K72Peu70hBpCsqDpF4qHIMXpLQ429k98aEaJr1BF3Ca3bIozp01IPf0Yof5GxAA";    asm("jmp %0;"        : "=a"(x)        : "0"(a));}

(Code::Block的编译器为gcc,内联汇编写法为AT&T记法,在VC编译器中(如VS)则应改为Intel记法)

这里写图片描述

之后好奇去研究了一下它的原理,本来以为是通过一些可见字符组成的ShellCode来间接形成不可见字符的,即等价代码
后来在https://bbs.pediy.com/thread-113177.htm这里看到了,实际上就是相当于bxx编码,将不可见字符转成可见字符嘛,不过厉害的是最后有直接为可见字符的解码器(似乎是Alpha3)

在OD中跟了一下,发现解码循环在这里
这里写图片描述

C. 明日计划
RE/MOBILE原理学习及练习

原创粉丝点击