SCTF 2014 pwn题目分析】的更多相关文章

因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目.主防项目目前先搁置起来了,等比赛打完再去搞吧. 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很符合套路的:一道栈溢出.一道格式化字符串.一道堆溢出. pwn200 一个栈溢出. 题目给出了libc.保护只有nx. 拿到题后的基本思路就是leak出got表中函数的地址,然后拿libc算偏移算出system的地址.然后用这个地址去覆盖一个函数的got表. pwn300 一个明显的格式化字符串漏洞…
Re1 是一个简单的字符串加密.程序使用了多个线程,然后进行同步.等加密线程加密好了之后才会启动验证线程.这个题比较坑的是IDA F5出来的结果不对,不知道是不是混淆机制. 刚开始看的是F5后的伪代码,一脸懵逼.后来看了下汇编才明白是怎么回事. 解密直接打表就可以,也可以写逆算法. pwn1 用checksec看了一下保护机制,有canary+nx保护.漏洞是一个简单的栈溢出,但是没有办法劫持程序的流程. 因为flag已经被读到了内存中了,所以就想到去leak出来.后来知道有一种ssp leak…
因为本地和远程的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…
之前没有分析PWN400,现在再开一篇文章分析一下. 这个日志是我做题的一个笔记,就是说我做一步题就记录一下是实时的.所以说可能会有错误之类的. 首先程序是经典的笔记本程序,基本上一看到这种笔记本就知道是考堆了吧~ write(, "1.New note\n", 0xBu); write(, "2.Show notes list\n", 0x12u); write(, "3.Show note\n", 0xCu); write(, "4…
ZCTF的pwn赛题分析, PWN100 这道题与SCTF的pwn100玩法是一样的,区别在于这个要过前面的几个限制条件.不能触发exit(0).否则就不能实现溢出了. 依然是触发canary来leak出内存中的flag. note1 这次ZCTF的题是以一个系列出的,以下三个题都是同一个程序. 首先看了一下程序的大概流程,这个是记事本程序. 1.New note\n2.Show notes list\n3.Edit note\n4.Delete note\n5.Quit\noption--->…
uboot的官网可以通过谷歌搜索得到,显示结果第一个链接就是. 官网:: http://www.denx.de/wiki/U-Boot ftp下载: ftp://ftp.denx.de/pub/u-boot/ 本文以uboot 2014.07为例,一般第一步总是类似这样: make smdkc100_config 然后执行make 先看Makefile第481 行 %_config:: outputmakefile @$(MKCONFIG) -A $(@:_config=) 当输入make sm…
这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF:路由器漏洞练习靶机 用binwalk解压DVRFbin后,题目位于如下目录中 调试环境配置参考本系列中的前面两篇文章: 通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃 路由器漏洞复现分析第二弹:CNVD-2018-01084 ————————————————————————————…
Search in a big sorted array,这个比之前的二分法模板多了一个很不同的特性,就是无法知道一个重要的条件end值,也是题目中强调的重点 The array is so big so that you can not get the length of the whole array directly~所以这里单独分析这个问题~ 一般涉及到sorted array,肯定可以的解决方法是for loop,然而for loop的复杂度是O(n),而且对于这个长度无法衡量的big…
题目信息 作者:不详 链接:http://poj.org/problem?id=2456 来源:PKU JudgeOnline Aggressive cows[1] Time Limit: 1000MS Memory Limit: 65536K 描述 Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at p…
---XCTF 4th-QCTF-2018 前言,怎么说呢,这题目还是把我折磨的可以的,我一开始是没有看到后面的直接狙击的,只能说呢. 我的不经意间的粗心,破坏了你许多的温柔 1.气的我直接检查保护: 32位程序,开启了canary保护. 2.ida查看: 首先放的第一幅图片呢,是我一开始以为可以溢出的,也可以看见我旁边标注了一个maybeoverflow. 但是是不可以的,因为首先由于这里的 i 最大上限100,可能有的人头铁就要说了,这里v7可以慢慢溢出去修改i,(和我一样) 可是这里v13…
去年的一场比赛,今年来把去年不会做的题目来看一下,只在buu找到三道题,剩下两道好像是内核题,算了,估计找到也不会做. npuctf_2020_level2 bss段上的格式化字符串漏洞的利用. 程序还是比较简单的,一个while循环套着一个read和printf,printf存在格式化字符串漏洞,buf是在bss段上.不能直接找偏移用pwntools模块生成payload,这里需要利用栈上的栈链来间接的修改.这里选择将返回地址修改成one_gadgets的地址拿shell. 这里rbp+8的位…
花了大概两天时间来做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…
本文从漏洞分析.ARM64架构漏洞利用方式来讨论如何构造提权PoC达到读取root权限的文件.此题是一个ARM64架构的Linux 5.17.2 版本内核提权题目,目的是读取root用户的flag文件. 概况 题目默认开启了KASLR地址随机化和PXN防护,指定CPU核心数量为一,线程为一. 使用cpio命令分离出驱动模块后放到IDA查看,只实现了read和write函数的功能,功能相当简单.read函数把内核栈内容拷贝到全局变量demo_buf,然后再把demo_buf的内容拷贝到用户态缓冲区…
18. public class Test { public static void add3(Integer i) { int val=i.intvalue(); val+=3; i=new Integer(val); } public static void main(String args[]) { Integer i=new Integer(0); add3(i); System.out.println(i.intvalue()); } } what is the result? bA.…
3. public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x=y) System.out.println("Not equal"); else System.out.println("Equal"); } } what is the result? 这一题考察的是 if 语句.if 语句的写法如下: if (boolean expression) { st…
1.1) public class ReturnIt{2) returnType methodA(byte x, double y){3) return (short)x/y*2;4) }5) }what is valid returnType for methodA in line 2? 这一题考的是Java中的类型转换. 在这里,自需要看第(3)据代码就行了.分析以下这一行代码 (short)x / y * 2 这一行代码对 x 进行类型转换,将 byte 类型的 x 转换成 short 类…
Given: 1. public class returnIt { 2. returnType methodA(byte x, double y){ 3. return (short) x/y * 2; 4. } 5. } What is the valid returnType for methodA in line 2? A.int B.byte C.long D.short E.float F.double 这个题目考察数据类型转换:简单类型数据间的转换,有两种方式:自动转换和强制转换,通…
pwn200 漏洞给的很明显,先是读到了main的局部数组中,然后在子函数中向子函数的局部数组栈里复制. 总体思路是leak system的地址,然后再向一个固定地址写入/bin/sh,最后执行system函数 leak使用pwn库的DynELF实现,整体使用rop链. //ida伪代码 int __fastcall echo(__int64 a1) { char s2[]; // [sp+10h] [bp-10h]@2 for ( i = ; *(_BYTE *)(i + a1); ++i )…
以下是C/C++面试题目,共计17个题目,其中涵盖了c的各种基础语法和算法, 以函数接口设计和算法设计为主.这17个题目在C/C++面试方面已经流行了多 年,大家需要抽时间掌握好,每一个题目后面附有参考答案,希望读者能够抽 时间做完题目后在看参考答案,每一个题目至少做两边,设计出两种解决问题 的算法. 1.比较字符串,输出它们第一个不同字母的位置,大小写不敏感2.判断一个数是不是回文数,数字 1234321.3.比较两字符串长短,并返回结果. 4.给一个字符串,编程取其中一个特定的字符并输出.…
首先看一下题目,下列程序会在那一行崩溃,程序如下: #include<iostream> using namespace std; struct S{ int i; int *p; }; int main(){ S s; int *p = &s.i; p[0] = 4; p[1] = 3; s.p = p; s.p[1] = 1; s.p[0] =2; return 0; } 虽然程序很短,但想要理解清楚,还是不容易的,首先先来说几个知识点: 1.对于struct结构体来说,它所分配的…
Search in rotated sorted array,题目中也给出了相应的例子,就是在sorted array某个节点发生了翻转(ie.0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).所以我们可以把这个sorted array 分成两部分看,一部分是左半部分的上升区间,然后是最小值,一部分是右半部分的上升区间.以及考虑其中的特例就是翻转后仍是原来的array,一个连续的上升区间. 1. Find Minimum in Rotated Sorted Ar…
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…
14. which three are valid declaraction of a float? ADFA. float foo=-1; B. float foo=1.0; C. float foo=42e1; D. float foo=2.02f; E. float foo=3.03d; F. float foo=0x0123; 这一题考的是 Java 的基本数据类型和类型转换. 在 Java 中规定,整数字面值默认为 int 类型,浮点数字面值默认为 double 类型. A:-1 是…
11. what is reserved words in java?A. run B. default C. implement D. import Java 中,给标识符取名的时候,不能使用关键字和保留字. 在 Java 中常用的关键字有: 1.访问控制符: public.protected.private 2.数据类型 byte.short.int.long.float.double.char.boolean 3.与类.方法有关的 new.class.extends.implements.…
1.Determine if a string has all unique characters learn: 为了减少空间利用率,其比较优秀的算法一般都适用位操作 返回值的命名方法,我们需要学习 String 类型作为输入参数,怎么样写比较节省空间与时间,特别是比较长且需要频繁调用的时候 输入为空的时候,不要忘记写不同输入情况下 需要考虑情况的列表 注意String 中的数据不一定是Ascii 2.Reverse a C-style String learn:   对于输入的参数要判别是否有…
3.11 1.A(C),2.D,3.A,4.B,5.A(C),6.D(A),7.D,8.A(D),9.B,10.D(B), 11.C(B),12.C(D),13.B,14.D,15.C,16.C(D),17.C(A),18.A(C),19.A(B),20.D 3.12 1.D(C),2.A,3.D,4.C(A),5.C(B),6.C,7.A,8.A,9.A,10.C(A), 11.D(C),12.C(D),13.C,14.B,15.D,16.A(B),17.D,18.A(C),19.A,20.C…
B.项目有依赖 D A A B B C B C D B A B B A B…