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

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

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

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

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