924 pwn学习

news/2024/11/15 13:48:49/文章来源:https://www.cnblogs.com/capoo/p/18430356

9/24 pwn学习

知道了一次完整的pwn攻击流程,现在我们正式开始学习pwn基础知识

—————————pwn方向以 难入门 难提升著称

基础知识-C语言学习-1

由于pwn要求c语言必须掌握,所以我们先进行一段时间的的C语言学习

学习视频:浙江大学翁恺教你C语言程序设计!C语言基础入门!

做判断

if ( im < 0){im = 60 + im;ih --;
}

当im<0时,将会执行if{}里面的所有内容,如果im!<0,那么将会跳过大括号里的内容去执行后面的代码。

if(条件成立){}

if语句的格式

判断的条件

  • 计算两个值之间的关系,叫做关系运算
运算符 意义
= = 相等
!= 不想等
> 大于
>= 大于或等于
< 小于
<= 小于或等于
  • 当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0

比如

printf("%d\n",5==3);

不成立,那么输出的结果就是0

优先级

  • 所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高
例如
printf("%d\n",7>=3+4);

输出的结果将是1

  • 判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的

找零计算器

  • 两个动作:
  1. 输入购买金额
  2. 根据支付的票面进行找零,或告知用户余额不足以购买
  • 程序需要读入用户的两个输入,然后进行一些计算和判断,最后输出结果
//这是一个注释,计算机不会管它
//初始化
int price = 0;
int bill = 0;
//读入金额和票面
print("请输入金额:");
scanf("%d",price);
printf("请输入票面:");
scanf("%d",bill);
//计算找零
if ( bill >= price ) {print("应该找您:%d\n" , bill - price);
}

否则的话

接上文,如果钱不够怎么办?

  • 如果程序运行,钱不够,就没有下文了,所以我们需要else
  • esls = 否则的话
//这是一个注释,计算机不会管它
//初始化
int price = 0;
int bill = 0;
//读入金额和票面
printf("请输入金额:");
scanf("%d",price);
printf("请输入票面:");
scanf("%d",bill);
//计算找零
if ( bill >= price ) {print("应该找您:%d\n" , bill - price);
}else{print("你的钱不够\n");
}
return 0;

if语句再探

  • 一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果不是零,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句

也可以没有大括号

if(total > amout)total = amount+10;

注意第一行没有分号,没有写错

同理else也可以没有大括号,就不演示了

大括号的作用是满足条件后执行多行代码,两者是不一样的

嵌套的if-else

  • 如果要求输入三个整数,输出其中最大的,应该怎么做?

当if的条件满足或者不满足的时候要执行的语句也可以是if或if-else语句,这就是嵌套的if语句

if (code == READY )if (count < 20 )printf("一切正常\n");elseprintf("继续等待\n");
return 0;

(嵌套函数示例)

else的匹配

  • else总是和最近的if匹配

如果加了大括号,else的意义就发生了变化

if (code == READY ){if (count < 20 )printf("一切正常\n");
}    elseprintf("继续等待\n");
return 0;

else就和最上面的if匹配,假设count是24,那么输出的结果就是0,不会进入后面那个else(有点混乱

嵌套的if

if(gameover == 0)if(player2move == 2)print("YOUR TURN\n");
elseprint("MY TURN\n");

大括号另一个作用:确认else究竟是哪个if的

tips

  • 在if或else后面总是用{}
  • 即使只有一条语句的时候

今天的C语言就学到这里

NewStar pwn题目的wp

由于比赛要求,应该不能在比赛结束之前泄露解题办法,所以将在比赛结束后上传wp

不过今天也是成功写完了wp

不过学长说写的太详细了,打算下次只给个思路就好了

pwn基础知识 栈的工作原理-1

栈的工作原理的每一个基础知识,都要求背的很熟练,才有实力去做题目

程序的编译链接

c语言和c++市场占用率很难下去,目前具有不可替代性,但是也有挑战者rust,由于出生时间晚,所以市场占有率很低,所以我们现在研究c语言和c++还大有市场

linux不能通过改后缀名来欺骗操作系统它是个什么文件,它是用文件头来识别的,linux中用file命令来识别文件类型

我们运行的程序储存在磁盘上,运行后载入内存,在内存中与我们交互

在底层中,计算机只认识0和1,比如A,在底层保存为0100 0001,16进制可以直接作为二进制的表示码,0x41就是大写的A,换行符就是0x0A

gcc命令编译c语言源代码

从c源代码到可执行文件的生成过程

  • 编译
    • 由c语言代码生成汇编代码
  • 汇编
    • 由汇编代码生成机器码
  • 链接
    • 将多个机器码的目标文件链接成一个可执行文件

C语言代码—>汇编代码—>目标文件—>可执行文件

gcc -S可以将源代码汇编成汇编文件

linux中执行可执行文件./文件名(当前目录)

1. 如果我们直接vim二进制文件,就会发现全是乱码

为什么是乱码呢

因为在计算机底层编码中,只有特定的一些范围的值,是可以表示成字符的,比如ASCII码的可见范围是10-127,超出这个范围之外的值,就是乱码了

我们可以转换为二进制内容查看

太晚了,明早继续

2024/9/24 23:52

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/803120.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Raft总结

Raft算法State所有server都有的持久化状态 先存储,然后响应RPCcurrentTerm 当前任期,初始为0,单调递增votedFor 当前任期投票给谁了,没有就是nulllog[] 日志条目,每个条目都包含命令、Leader收到条目时的任期,第一个条目的index为1所有server都有的Volatile statecommitI…

Lab3 Raft

Lab3 Raft 1.Getting Started 代码位置:基础框架代码位置:src/raft/raft.go测试代码:src/raft/test_test.go建议测试时使用-race 2.The code向raft/raft.go添加代码来实现Raft。实现必须支持以下接口 // 创建一个Raft Server rf := Make(peers, me, persister, applyCh) fun…

Lab3 记录

Part 3A: leader election 1.选举主要流程新服务器加入集群服务器在启动时状态是Follower。只要持续接收到Leader或Candidate的心跳信息,就继续保持Follower状态。开始选举每个Server都有一个随机的选举超时时间,选举超时在一个固定区间内随机选择(例如,150-300毫秒) 如果…

软件工程课程第三次作业

软件工程 https://edu.cnblogs.com/campus/fzu/SE2024作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261作业目标 分析学生们的需求,设计一个app原型解决他们的问题学号 072208130合作伙伴 052205144张诗悦使用figma设计原型,原型链接:https://www.figma.…

大文件去重

若文件存的字符如下图,要求进行去重可将数据存入HashSet,如下,但如果文件很大,大于虚拟机内存的话,会报异常java.lang.OutOfMemoryError: Java heap spaceHashSet set = new HashSet();File file = new File("E:\\aa.txt");BufferedReader reader = new Buffere…

9月13日关于数组存储数据

在题目中要求建立数组来存储项目信息,储存的内容包括String、int、boolean、double等各种不同类型,刚开始我还处于建立普通数组要不是int【】要不是string【】,越琢磨越不对劲这样并不能存储不同类型的数据,但是数据又需要统一存取,网上又没有这么简单的讲解,也是被这个简…

9.24日总结

今日上学配置了Node.JS的环境变量,并应用VScode进行JavaScript的相关学习应用 其中

9月11日toString重载方法的使用

在编辑过程中我经常会写一部分调试一部分,至少知道哪里有错能够及时改正,在编写时发现studentManger中的打印出来的是地址,而不是自己想要的内容,经过查询是需要写toString来重载输出利用这样的方法,一是可以正常打印出自己想要的内容,而是可以根据一个参数打印出所有的信…

软件工程作业——结对项目

这个作业属于哪个课程 22级计科12班这个作业要求在哪 作业要求这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序成员姓名 学号 GitHub地址吕宏鸿 3122004446 结对项目宋观瑞 3122004402 结对项目1.PSP表格PSP2.1 预估耗时(分钟) 实际耗时(分钟)计划 10 5* 估计…

9月10日循环条件的结束

在测试编程中涉及到输入错误要重新返回UI界面,但是我写的总是输入不管是对还是错都会直接结束程序,完全不符合要求,经过整理思路,查询代码结构,此处应该设计为双层循环外部为while,内部为witch case语句,当输入为1时执行case==1;经应该是执行生产计划类然后跳出witch条…

IDEA更改远程git仓库地址

前言 我们在使用IDEA开发时,一般会配置好对应的git仓库,这样就比较容易对代码进行控制以及协同开发。但有时候,我们远程的仓库地址由于这样那样的原因,需要迁移(这在爱折腾的企业是常有的事情)。那么,我们该如何在IDEA中更新远程仓库地址呢? 如何设置 首先,我们点击上…

vue3开发中易遗漏的常见知识点

组件样式的特性 Scoped CSS之局部样式的泄露 示例(vue3): 父组件: <template><h4>App Title</h4><hello-world></hello-world> </template> <script> import HelloWorld from ./HelloWorld.vue;export default {name: App,compo…