-
-
[原创]【ctf2022国赛】login
-
发表于: 2022-5-30 10:14 13986
-
发现就一个init和vuln,然后vuln能够反复执行一个,并且每次执行前都传入一个字符串,然后操作是基于这个字符串的
发现里面有一个循环,循环什么呢?
检测了一下opt和msg,稍加思考是option和messege两个英文的缩写,也就是选择和信息。
先看option:
发现option那里atoi的v7就是这里的选择,那message呢?
红色箭头处有一个把消息复制到一个名为dest的堆块中,而后面的switch是对这个dest进行操作的
那么我们就可以知道了,option是选择后面的switch,message是指定switch的操作的参数(当然while里卖面内部的细节还规定了写option和message的格式,这里不赘述,下贴一下具体格式):
看到exec,就很高兴了,因为有一个传shellcode的接口
但是别高兴太早,有俩个约束:
(1)方框处要求shellcode必须使用可打印字符
(2)箭头处有个暂时不知道是啥的全局变量必须为1的要求
对于(1),我们使用github上下载的一个叫alpha3的轮子,它能够将shelllcraft转为可视化字符(具体用法贴文末)
对于(2)我们细看get_root函数
这个函数的功能就是把满足exec中的(2),那么我们只需要option:1\nmessage:ro0t\n\n就行了
alpha3能够把我们的asm字符转换为全是可打印字符,在pwn题中的作用就是来搞isprintf()约束下的shellcode
注意这里的寄存器是因题而异的,比如这道题
是call rdx那就是rdx
【CTF题解-0x03】moeCTF2020-partial official write up by arttnba3 | arttnba3's blog
option:num
message:string
pd
=
'optin:num\nmessage:string\n.....'
+
'\n\n'
##这个是python脚本的写法,最后俩'\n'是为了停下while循环)
option:num
message:string
pd
=
'optin:num\nmessage:string\n.....'
+
'\n\n'
##这个是python脚本的写法,最后俩'\n'是为了停下while循环)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
- 西湖论剑2024 IOT赛后复盘及mqtt rce详解 13890
- 对某嵌入式设备声波配网的研究 11965
- DAS10月月赛PWN出题心路&&CVE-2023-40930的介绍 11388
- [原创]关于Nokelock蓝牙锁破解分析 21960
- [原创]基于树莓派的蓝牙调试环境搭建 24521