pwnable_start & ciscn_2019_es_2 & ez_pz_hackover_2016 & pwn2_sctf_2016
花了两天时间做了这四道题,感觉收获很多。但是这种收获感觉写文章写不出自己的思路,就录制了一个视频。
pwnable_start
这道题考察了系统调用,shellcode的编写,和动态调试的知识。
ciscn_2019_es
这道题考了栈转移,先泄露栈地址,再栈转移回去写rop链。
ez_pz_hackover_2016
这道题打开学习到的也是动调,发现动态调试真的有用。
pwn2_sctf_2016
这道题本来不计划放到视频中的,录着录着乱了。。。这里有一个符号判断的问题,感觉视频中没有讲清楚,这里补充一下。

这里是一个v2和32比较大小,v2是等于atoi(&nptr),其实看v2也能看出来,v2是int类型,没有刻意标明是无符号类型,所以在这里就是有符号类型。
有符号int:-2^31 ~ 2^31-1,即-2147483648 ~ 2147483647。4字节。
当我们输入-1的时候,实际上的二进制保存的是1111 1111,1111 1111,1111 1111,1111 1111,这里的第一个1其实用来表示正负的。
所以这里的-1假如转换成无符号的时候大小就是2147483648+2147483647==4294967295

也就是题目中的这个样子。而我们再看这道题的汇编是怎么写的。

这里要用cmp指令,我们就先来看一下cmp指令的知识。
偷了张图,感觉更直观了。。。
上面是直接从百度百科复制过来的,感觉讲的很清楚了。
所以这道题输入-1的时候,SF=0,OF=1。
这个时候我们再看jle指令,转移条件寄存器描述是ZF=1 OR SF≠OF。
在这里,很明显是是要跳转的,所以

这里就直接跳转过来了,就绕过了这个判断。感觉这里就算是讲清楚了。视频已经在审核中了,等审核完我就把视频扔上来了。真的是感觉学到了好多东西呢。
pwnable_start & ciscn_2019_es_2 & ez_pz_hackover_2016 & pwn2_sctf_2016的更多相关文章
- [BUUCTF]PWN——pwnable_start
pwnable_start 附件 步骤: 例行检查,32位程序,什么保护都没开,首先想到的是ret2shellcode的方法 本地试运行一下,看看程序大概的情况 32位ida载入,没法f5,好在汇编不 ...
- [BUUCTF]PWN——ciscn_2019_es_2
ciscn_2019_es_2 附件 步骤: 例行检查,32位程序,开启了nx保护 32位ida载入,shif+f12查看程序里的字符串,这边的"echo flag" 是个迷惑性的 ...
- [BUUCTF]PWN——ez_pz_hackover_2016
ez_pz_hackover_2016 题目附件 解题步骤: 例行检查,32位,开启了RELRO保护,二进制的保护机制看这里 由于没有开启nx保护,对于这题一开始想到的是利用写入shellcode来获 ...
- [BUUCFT]PWN——pwn2_sctf_2016
pwn2_sctf_2016[整数溢出+泄露libc] 题目附件 步骤: 例行检查,32位,开启了nx保护 试运行一下程序,看看大概的执行情况 32位ida载入,shift+f12检索程序里的字符串, ...
- pwnable_start
第一次接触这种类型的题,例行检查一下 题目是32位 没有开启nx保护可以通过shellocode来获得shell 将题目让如ida中 由于第一次碰到这种题,所以我会介绍的详细一点, 可以看到程序中调用 ...
- pwnable_start (内联汇编)
第一次写内联汇编的题目,以前见师傅们在exp中写汇编,感觉很厉害,今天碰到了,也记录一下. 下载附件发现是32位程序,什么保护都没开,ida看一下伪代码. 可以说是很简洁了,调用了一个write和re ...
- [BUUCTF-Pwn]刷题记录1
[BUUCTF-Pwn]刷题记录1 力争从今天(2021.3.23)开始每日至少一道吧--在这里记录一些栈相关的题目. 最近更新(2021.5.8) 如果我的解题步骤中有不正确的理解或不恰当的表述,希 ...
- Buuctf刷题:部分
get_started_3dsctf_2016 关键词:ROP链.栈溢出.mprotect()函数 可参考文章(优质): https://www.cnblogs.com/lyxf/p/12113401 ...
- BUUCTF-PWN-第一页writep(32题)
温故而知新,可以为师矣.所以花了几天时间重新做了下 buuctf 的 pwn 题,先发下第一页共 32 题的题解.还有如果题解都很详细那么本文就太长了,写起来也浪费时间,所以比较简单的题就直接丢 ex ...
随机推荐
- [atARC080F]Prime Flip
构造一个数组$b_{i}$(初始为0),对于操作$[l_{i},r_{i}]$,令$b_{l_{i}}$和$b_{r_{i}+1}$值异或1,表示$i$和$i-1$的差值发生改变,最终即要求若干个$b ...
- [atARC105D]Let's Play Nim
先对$n$分奇偶两种情况考虑-- $n$为奇数,显然先手希望最终产生的$x_{1}\oplus x_{2}\oplus...\oplus x_{n}=0$ 对于后手,考虑构造:将最大的未被选择的$a_ ...
- 柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户
1.关于柯基数据 南京柯基数据科技有限公司成立于2015年,提供一站式全生命周期知识图谱构建和运维.智能应用服务,致力于"链接海量数据,从大数据中挖掘智慧".帮助企业运用知识 ...
- Codeforces 710F - String Set Queries(AC 自动机)
题面传送门 题意:强制在线的 AC 自动机. \(n,\sum|s|\leq 3\times 10^5\) 如果不是强制在线那此题就是道 sb 题,加了强制在线就不那么 sb 了. 这里介绍两种做法: ...
- 【6】蛋白质组学鉴定定量软件之MaxQuant
目录 1.简介 2.下载安装 3.配置与运行 4.结果 5.Perseus后处理 6.小结 1.简介 2016年,德国马普所的Cox和蛋白质组学领域巨擘Matthias Mann合作开发了MaxQua ...
- 【Python小试】计算目录下所有DNA序列的Kmer并过滤
背景 Kmer是基因组组装算法中经常接触到的概念,简单来说,Kmer就是长度为k的核苷酸序列.一般长短为m的reads可以分成m-k+1个Kmer.Kmer的长度和阈值直接影响到组装的效果. Deno ...
- linux 网络配置管理
[1]网络配置基础 (1)用户既可以通过命令行的方式,也可以通过友好的图形界面,轻松完成网络配置. (2)实现Linux网络配置的惟一目标就是修改系统中众多的网络配置文件, 如/etc/interfa ...
- Bootstrap实战 - 瀑布流布局
讲 Bootstrap 基础的教程网上已经很多了,实际上 Bootstrap 中文网(bootcss.com)里的文档已经写的很详细了,但实战的案例却不多.这里用一些当前流行的网页布局为导向,使用 B ...
- keras房价预测数据集boston_housing.npz文件下载
github地址: https://github.com/yuxiwang66/boston_housing 码云地址: https://gitee.com/polarisslk/boston_hou ...
- Tomcat类加载机制和JAVA类加载机制的比较
图解Tomcat类加载机制 说到本篇的tomcat类加载机制,不得不说翻译学习tomcat的初衷. 之前实习的时候学习javaMelody的源码,但是它是一个Maven的项目,与我们自己的 ...