首页
社区
课程
招聘
[求助]一道ctf pwn题的思路
发表于: 2016-10-5 11:46 8079

[求助]一道ctf pwn题的思路

2016-10-5 11:46
8079
网上搜索了linux pwn的教程,感觉入不了门。。
看了一道之前一道ctf的pwn题目,readelf看出来是一个64位静态链接的elf执行文件,checksec只开了NX。

但是网上针对NX的一般都说是leak 动态库,构造system("/bin/sh")什么的。但是看到又是静态链接又没符号的完全不知道怎么办了?望大侠们稍微指点一些这类情况的思路和学习方法了。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 90
活跃值: (173)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
只开了nx?那试试ret lib或rop。
2016-10-5 23:57
0
雪    币: 96
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
但是这个应该是个纯静态的elf(file了一下 貌似有statically linked和stripped),又没有符号的话,怎么构造system("\bin\sh")的rop链呢?望再指点一下
2016-10-6 16:11
0
雪    币: 96
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
貌似需要 针对特定的libc 弄sig文件。。就strings出glibc-ld.so.cache1.1。貌似都对应不到glibc的库版本。
2016-10-8 07:25
0
雪    币: 292
活跃值: (815)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
静态elf文件主要是用来分析漏洞的,楼上说的ret2libc其实就是system("/bin/sh"),system地址需要libc版本,一般CTF官方都会给的,实在不行就暴力跑一下,有libc版本就能算出system相对基址偏移,然后在题目中leak出libc基址加上偏移就是system地址了
2016-10-8 08:09
0
雪    币: 96
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
因为libc是被静态链接在程序内,符号又被剔除了,所以看了网上得确定glibc的版本但是官方的程序里找不太到相关的信息了,就在程序字符串看到glibc-ld.so.cache1.1,再去查查看能不能对应起来。谢谢解答,我再去研究试试。
2016-10-8 09:27
0
雪    币: 228
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
可以用工具来快速ROP,例如ROPgadget
2016-10-8 13:07
0
雪    币: 96
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
使用了已经生成了gadget文件,但是现在的难点就是确定不了system库函数静态编译在程序的地址是多少。。得再想想办法
2016-10-8 13:17
0
雪    币: 228
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
没能生成INT 80的gadget么?执行系统调用呗,不一定非得找system函数吧。。
2016-10-10 15:48
0
雪    币: 96
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
因为那个ctf题是socat把本地漏洞程序转发出来的,需要反弹出Shell拿flag,我只知道system可以。。系统调用 是不是要进内核了?因为主要是执行些shell命令
2016-10-10 17:03
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学一下pwntools会好点,需要用rop链泄露多个函数信息,之后可以找一个查库的类型的网站,看可不可以查到,之后就自己算了。
2016-10-10 23:45
0
雪    币: 228
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
ctf pwn题大部分都是socat把本地漏洞程序转发出来的,需要反弹出Shell拿flag。。。

调用system属于ret2libc,只是拿shell的一种方法,这道题静态编译的话显然不适合用ret2libc。

尝试构造如下的rop,11号系统调用,execve(/bin/sh),不需要进内核:
XOR EAX,EAX      
PUSH EAX      
PUSH 68732F6E            hs/n      
PUSH 69622F2F            ib//         //bin/sh     
MOV EBX,ESP     
PUSH EAX      
XCHG CL,AH     
MOV AL,0B          EAX:系统调用号 EBX:Filename ECX:Flag EDX:Mode     
INT 80
2016-10-13 09:23
0
雪    币: 96
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
嗷嗷明白了,基本我可以搞定了。麻烦想问问linux下的pwn该怎么入门?有什么学习资料吗
2016-10-13 10:17
0
雪    币: 228
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
看蒸米的博客里面有Linux rop系列,很详细,然后做几道题就可以了
2016-10-14 09:54
0
雪    币: 96
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
好的,谢谢指点
2016-10-14 10:08
0
雪    币: 799
活跃值: (457)
能力值: ( LV12,RANK:280 )
在线值:
发帖
回帖
粉丝
16
静态链接直接jmp magic system就可以了
2016-10-23 21:39
0
游客
登录 | 注册 方可回帖
返回
//