C_and_CPP 板


LINE

今天在看一个简单的小程式 程式目的是执行shell code 但看不太懂 google关键字也下的不太好 没有找到相关资讯 主要程式码如下: char code[] = "\x..\x.." int main () { int (*func)(); func = (int(*)()) code; (int)(*func)(); } shell code的部份我就不打了 主要是看不懂第二行到底再写什麽 或可以告诉我要往哪个方向找 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.229.182.169
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1468156508.A.D61.html
1F:推 chuegou: 可以这样转型喔!?求解释 07/10 21:20
2F:推 s25g5d4: 把 array of char 转型成 function pointer 07/10 21:27
3F:推 johnpage: Code 程式码(机械码),函数指标 07/10 21:29
4F:→ johnpage: 呼叫code的程式 07/10 21:30
5F:→ johnpage: 骇客 07/10 21:31
6F:→ zarados: 请问func到底指向什麽鬼?? 还是是s2大说的转型呢? 07/10 21:33
7F:推 LiloHuang: 程式经过编译器编译後,会产生一连串的机器码资料 07/10 21:42
8F:→ LiloHuang: 当程式执行时指令机器码会被 Program Loader 加载到 07/10 21:43
9F:→ LiloHuang: 记忆体,进而让内部或外部的程式执行该片段指令 07/10 21:44
10F:→ LiloHuang: 那段程式码在有开 DEP 的机器上,通常执行都会失败 07/10 21:44
11F:→ LiloHuang: 通常我们会用 VirtualAlloc 或 mmap 等 API 来配置一段 07/10 21:45
12F:→ LiloHuang: 可读可写可执行的区块,把指令机器码搬过去该区块 07/10 21:45
13F:→ LiloHuang: 这也是 JIT 重要的环节之一,动态产生可执行的机器码 07/10 21:47
14F:→ LiloHuang: 至於那个就是转型,做出 function call 所需要的动作 07/10 21:47
15F:→ LiloHuang: 如把参数 push 到 stack (视 calling convention 而定) 07/10 21:48
16F:→ LiloHuang: 进而执行该机器码指令 (已尽量用浅显文字描述 XD) 07/10 21:49
17F:→ LiloHuang: 有兴趣可以去选修 compiler 的相关课程 07/10 21:50
18F:→ LiloHuang: 转型成 function pointer (callable) 07/10 21:51
19F:→ LiloHuang: func 实际上就是直接指到那块阵列,可以再进行呼叫动作 07/10 22:01
20F:→ ctrlbreak: 会组语的秒懂 07/10 22:02
21F:→ LiloHuang: 有兴趣的人可以玩玩 Compiler Explorer - C++ 07/10 22:03
22F:→ LiloHuang: https://goo.gl/9yX6KQ 然後把显示 Binary 打开 07/10 22:03
23F:→ LiloHuang: 对於刚入门编译器设计,或者不懂组语的多少有些帮助 07/10 22:03
24F:→ zarados: 感谢Lilo大大的开释 谢谢!! 07/10 22:18
25F:推 s25g5d4: 原 PO 看得懂 int (*func)(); 已经很猛了 07/11 00:22
26F:推 seanwu: 如果想自己测试的话,gcc加-zexecstack,这是关DEP 07/11 06:59
27F:→ seanwu: 搭配gdb下lay asm,可以si去跟看看 07/11 07:00
28F:→ zarados: 弱弱的说一句其实我懂组语 但自学的没有很扎实... 07/11 08:57
29F:推 Qoofate: (int)(*func)(); 这行是呼叫执行吗? 07/11 10:41
30F:→ s25g5d4: 这行其实是宣告...XD 07/11 12:58
31F:→ s25g5d4: 阿 看错行 这行是执行 07/11 13:00
32F:推 LPH66: 第一行宣告, 第二行转型, 第三行执行 07/11 16:25
33F:→ LPH66: 基本上第二行写成那样是为了符合 C 语言的规则 07/11 16:27
34F:→ LPH66: 你必须要取得一个函式指标才能进行间接呼叫 07/11 16:27
35F:→ LPH66: 第二行那个转型就是把字串指标硬转成函式指标 07/11 16:28
36F:→ freef1y3: 执行应该 (*func)(); 就可以了吧? 07/11 16:57
37F:→ freef1y3: (int) 应该是把回传值转型, 可是执行完 shellcode 07/11 17:02
38F:→ freef1y3: 程式就跳掉了, 应该也用不到回传值 07/11 17:03
39F:推 steve1012: 这边的懂组语是指compiler 的课吗 还是architecture 07/12 01:41
40F:推 b0920075: 原Po是在看ais3 2015的writeup吗XDD 07/12 21:47
41F:推 Bencrie: 执行不是直接 func(); ? 07/13 00:54
42F:推 Bencrie: 测过两种都能跑,直接写 func(); 比较容易懂 07/13 00:57
43F:推 TobyH4cker: 阿靠 忘了要做AIS 07/13 12:23
44F:推 b0920075: 楼上还有时间 07/13 16:40
45F:推 cobrasgo: 要玩这东西请找旧一点的os + 旧shell 07/14 08:11







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP