WHUCTF PWN题目】的更多相关文章

花了大概两天时间来做WHUCTF的题目,第一次排名这么靠前.首先感谢武汉大学举办这次萌新赛,也感谢fmyy的师傅的耐心指导,让我第一次做出堆的题目来. pwnpwnpwn 这是一道栈题目,32位程序,只开启了堆栈不可执行.栈溢出泄露libc的基地址,然后换成one_gadget,就可以了. 1 from pwn import * 2 3 #p = process('./pwn') 4 p = remote('218.197.154.9',10004) 5 elf = ELF('./pwn') 6…
因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目.主防项目目前先搁置起来了,等比赛打完再去搞吧. 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很符合套路的:一道栈溢出.一道格式化字符串.一道堆溢出. pwn200 一个栈溢出. 题目给出了libc.保护只有nx. 拿到题后的基本思路就是leak出got表中函数的地址,然后拿libc算偏移算出system的地址.然后用这个地址去覆盖一个函数的got表. pwn300 一个明显的格式化字符串漏洞…
因为本地和远程的libc版本不同,pwn题目调试起来会有影响,所以来记录一下用patchelf和glibc-all-in-one来解决这个问题过程. 下载工具 下载patchelfgit clone https://github.com/NixOS/patchelf 下载glibc-all-in_onegit clone https://github.com/matrix1001/glibc-all-in-one glibc-all-in_one $ ./update_list #更新最新版本的…
偶然得到这个平台,发现是BIT的CTF平台,应该是平时的阶段性的训练题目.看了看题,其他方向的题目感觉都是入门题,但是pwn题目,发现还是比入门题难一点点的,来记录一下. pwn1 栈上任意位置的读写操作,只能一字节一字节读写,算好偏移,还是挺好做的. 比较坑的是,远程的libc被改了,用one_gadgets打的时候,明明可以拿到shell,但是不给flag!真是可恶!!! 做题思路:泄露libc基地址,泄露pie程序基地址,把返回地址覆盖成pop_rdi,binsh,system,拿shel…
去年的一场比赛,今年来把去年不会做的题目来看一下,只在buu找到三道题,剩下两道好像是内核题,算了,估计找到也不会做. npuctf_2020_level2 bss段上的格式化字符串漏洞的利用. 程序还是比较简单的,一个while循环套着一个read和printf,printf存在格式化字符串漏洞,buf是在bss段上.不能直接找偏移用pwntools模块生成payload,这里需要利用栈上的栈链来间接的修改.这里选择将返回地址修改成one_gadgets的地址拿shell. 这里rbp+8的位…
YLBNB 用pwntools直接连接,然后接受就行. 1 from pwn import * 2 3 p = remote('45.158.33.12',8000) 4 context.log_level = 'debug' 5 print p.recvuntil('}')[-30:] fan 简单的栈溢出,直接覆盖返回地址为shell的地址就行. 1 from pwn import * 2 3 p = process('./pwn') 4 #p = remote('node2.hacking…
目录 使用pwn_deploy_chroot部署国赛pwn比赛题目 一.前言 二.Docker 三.部署镜像 四.pwn_deploy_chroot 五.check && exp 六.参考链接 使用pwn_deploy_chroot部署国赛pwn比赛题目 一.前言 最近打国赛,需要build,组内大佬们决定build pwn题,于是啥也不会的我就去看docker了.但是自己从头看docker.dockerfile有点困难,最后找到一个工具pwn_deploy_chroot,很方便的完成了d…
刚刚开始学习pwn,记录一下自己学习的过程. 今天get了第二道pwn题目的解答,做的题目是2017年TSCTF的easy fsb,通过这道题了解了一种漏洞和使用该漏洞获取shell的方法:即格式化字符串漏洞,通过找到printf的got表改为system的got表,从而让执行printf函数变成执行system函数再传入/bin/sh参数,从而让程序执行system('/bin/sh')获取shell. 打开ida查看: 程序逻辑就是执行getname()函数. 进入getname()函数:…
刚刚开始学习pwn,记录一下自己学习的过程. 今天完成了第一道pwn题目的解答,做的题目是2017年TSCTF的bad egg,通过这道题学习到了一种getshell的方法:通过在大小不够存储shellcode的空间内写入egg_hunter使其去找到真正的shellcode所在的地址执行拿到shell. 首先拿到题目用ida去查看: 题目首先通过sub_8B0()生成了一个1000以内的随机数用来给dword_305C申请地址,这里用的malloc申请的地址是存在在堆中的,然后题目会把申请到的…
作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42530-1-1.html 0×00 背景 在上一篇教程的<shellcode的变形>一节中,我们提到过内存页的RWX三种属性.显然,如果某一页内存没有可写(W)属性,我们就无法向里面写入代码,如果没有可执行(X)属性,写入到内存页中的shellcode就无法执行.关于这个特性的实验在此不做展开,大家可以尝试在调试时修改EIP和read()/scanf()/gets()等函数…