汇编(四)初识堆栈
堆栈和汇编指令延伸
简单初步理解堆栈:
1、就是一块内存,操作系统在程序启动时候就分配好的,供程序执行使用。
2、很重要就对了!对底层安全尤为重要,需要认真学。
3、堆栈是程序执行所用,从下往上使用,如果堆栈用完,会“堆栈溢出”程序也会崩溃。
4、栈指针寄存器(ESP):指向当前栈的地址,可以右键选择“flow”
堆栈使用
mov指令
我们仍可以继续使用mov指令往堆栈中存入数据,具体操作如下:
1、首先在ESP指针定位到目前栈的位置。
2、使用mov指令存入数据。
3、使用sub指令更改ESP指向地址。
转成汇编指令就是:
123456CODEMOV DEWORD PTR DS:[18FF88],12345678SUB ESP,4 //DWORD 是四个字节,堆栈是从下往上使用,所以要减4;ADD ESP,4 //将栈恢复到使用前,数据不用删除,会被再次覆盖
使用MOV指令进行操作时,必须手动更改ESP指向的地址,否则刚存入的数据会被覆盖,更改多少取决于用了多少。
这也解决了之前学c语言产生的一些疑惑。为什么c语言局部变量不赋初值就会导致结果错误,正是因 ...
汇编(二)环境及软件
前言
这篇是很久以前写好没发的,刚刚抛出来,改了改。
涉及了DTdebug的使用和寄存器介绍,以及一些指令。
以下是原文:
date: 2021-03-13 13:42:10
cover: https://s3.ax1x.com/2021/03/11/6NaG8J.png
tags: 汇编语言
top_img: https://s3.ax1x.com/2021/03/11/6NawVK.png
date: 2021-03-13 13:42:10
cover: https://s3.ax1x.com/2021/03/11/6NaG8J.png
tags: 汇编语言
top_img: https://s3.ax1x.com/2021/03/11/6NawVK.png
海哥名言:
“汇编是所有语言里面最简单的语言,因为他很好理解,很好实验。”
所以学习汇编最重要的是上手实验。了解了汇编基础以后,我开始进入汇编的正式学习,本篇使用工具和参考文章,都会放在文末。
这一部分强烈建议读一下《有趣的二进制》,目前我个人感觉这本书对汇编入门很有帮助,由浅入深通俗易懂。当然 也要记得动手试验一下书上的 ...
汇编(三)存储模式和指令拓展
存储模式和汇编指令
前言
本文涉及计算机存储模式,DTdebug对存储方式的实验。
以及MOVS、STOS、REP指令的介绍和演示;
存储模式
分为:大端模式和小端模式;
大端模式:数据低位在高位,数据高位在低位;
详细解释就是,数据的高位字节存放在内存的低地址端,数据的高位字节存放在内存的高地址端;
内存地址的低位到高位位就是从小到大;比如下面四个地址就是从低位到高位:
地址低位
地址高位
0x11
0x12
0x13
0x14
小端模式;数据低位在低位,数据高位在高位;
通过实例来看一下:
假设,要将0x1A2B3C4D以大端模式存入上例,那么结果就是:
12CODEMOV DWORD PTR DS:[0x00000011]
地址低位
地址高位
0x11
0x12
0x13
0x14
4D
3C
2B
1A
数据高位
数据低位
以上就是大端存储的示范。
至于为什么存放是从1A开始而不是1开始。是因为以字节为单位进行的,1A是16进制,刚好是二进制的八位,也就是一字节。
DTdebug使用
在上一篇文章里只简单介绍了DTde ...
python之千奇百怪的甲方(一)
前言
直接上环境:
主编给你一份刚修订好新杂志,让你整理出一个表格里面要有文章题目,作者,字数,稿费
仔细一想,说不了python搞起来更简单,效率更高。
本文分步进行操作,整合起来有点麻烦,因为一篇杂志里面文章很多,还有各种乱七八糟的栏目和图片,想要一劳永逸还需要慢慢来。
环境
python3.9
docx包
提取标题
一级标题
1234PYfor p in doc.paragraphs: if p.style.name=='Heading 1': print(p.text)
二级标题
1234PYfor p in doc.paragraphs: if p.style.name=='Heading 2': print(p.text)
前言
直接上环境:
主编给你一份刚修订好新杂志,让你整理出一个表格里面要有文章题目,作者,字数,稿费
仔细一想,说不了python搞起来更简单,效率更高。
本文分步进行操作,整合起来有点麻烦,因为一篇杂志里面文章很多,还有各种乱七八糟的栏目和图片,想要一劳永逸还需要慢慢来。
...
埋葬,往前走,别停
泪水死活控制不住,也不睡了,心里堵得慌,就写出来吧。
果然,这件事很难让人接受,哪怕是未曾谋面。可谁没有梦想呢?谁没有喜欢的东西呢?越想越难受。原来,我也是这么的脆弱。
刚学网安,我像个无头苍蝇一样,到处乱飞。啥也不会;
可能是缘分吧,因为一道逆向题我加上了大佬。
他非常热心,愿意给我这样啥也不知道的新人讲题。很庆幸,我仍然保存着那份直播的录像,还好没有删除。
今天,凌晨一点多,破天荒的我被@了。
秒回。
我的直觉告诉我,很重要。被告知这件事与那位大佬有关。
我隐隐约约想起了什么。我多么希望不是我想的那样。
但是,
他走了,
我们发现的很晚,可能是不经意间看到他qq空间的留言。
多么悄无声息。
还是两个月以前,年都没有过,永远定格在了2020.
…
“你好好学C,很重要的,尤其是指针。学完了我带你。”
“指针是啥?”
“鼠标指针…”
“有啥不会了,来问我。”
…
就在半年前,他还承诺过,在网安这条路上他带我。
现在,他有事先走了,
我还得继续下去这个承诺,好好学习,做一些自己喜欢的事。
我呢,也晃荡了半个寒假了,学习三分钟热度。总觉得时间还长,机会还多,别人一定和我一样在偷懒。
可我是 ...
辞旧迎新:关于过去一年的思考和未来规划
新年!
辛丑,也就是牛年;
在这里先给大家拜个年,祝大家学业顺利,事业有成,笑口常开。
不知道咋活的,一天天也不知道在关注些什么,连最基本的常识都快忘了。真的有点分不清中秋还是端午的感觉了。
也是在今天才猛然醒悟,今年原来是 鼠 年 啊!不过就剩下不到两个小时了,才赶紧hexo new一下写一写一年的思考。也对即将到来的辛丑规划一下。
2020;
我放下了许多,又拿起了些许,高三和高考说实话,过的丢人,心境是我最大的阻碍,好在瞎猫碰着死耗子:超常考到了平院。哈,也应了我的号:“平渊”。
这个名字倒是塞了不少年少的特色进去。也幻想着前路平摊,干啥啥顺手。倒是有段时间斗胆计划拥抱阳光,结果落叶抱了满怀。渐渐发现,我曾经厌恶的“自私”,正在被我奉作“瑰宝”。
对面站着的一个小孩,他没啥本事却满怀正义;我还是会踌躇,“你还小,你见的太少,不过这样挺好。”至少,他手里的那本《缘限》,我还拿着。
别了高中,慵懒竟减少了。不过疑惑却越来越多,让我烦心的不是疑惑本身,而是疑惑每每都与躁动一并前来。感觉错了大半辈子,啥也不是。之后我一度变得畏首畏尾,害怕失去,哪怕明知是浪费时光。所以,我选择自私。
...
ctf逆向题目训练笔记(一)
ctf逆向题目训练笔记(一)
一:OPEN-SOURCE
题目来源:HackYou CTF
附件:main.c
拿到手的是c语言源代码。要做的就是算法逆向,很基础的题型了。格式化整理一下,看着更清晰:
发现有几个不认识的函数,看来c学的还不到位,那就先解决看不懂这个问题吧。经过百度以后,记下几个新学的东西。
1、atoi:函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)
知道这个就可以了,不看中间那些条件,我们之间看最后输出结果。是一个算式。很明显是利用atoi函数转换数字以后再转换回来。
然后在按照前面的条件一一带入计算就行,另写一个脚本。
12345678CODEint main(){ unsigned first=0xcafe; //根据前提条件 unsigned int hash = first*31337+8*11+7-1615810207; //7是字符串长度函数 printf("%x",hash); return 0;}
得到 ...
超详细博客搭建,学不会来打我!
前言
这篇文章涉及内容有:博客搭建、部署云端、主题更换。使用教程以及后期的美化我会另写文章,有需要可以关注一波。
现在hexo建站教程不少,不过能够详细列出各种报错的不多,顺序编排也有或多或少的问题。本文更改了操作流程,上手直接选定主题省去了不少时间。
我的个人网站搭建至今六个月,当时折腾了好几天,就草草的写了几篇日记没有过于详细的搭建过程记录。所以准备再搞一个,认认真真写一篇文章,希望能帮助更多的人。可能出现的报错我都加在那个阶段的后面,看目录很明显。
为了写一篇详细到能解决大部分建站问题的文章,我分别在三台机器上搭建了不同主题的博客,也遇到了各式各样的报错。如果后续在实际操作中遇到本文未提及的错误,还请发邮件给我,以便于完善文章。1272515617@qq.com。
解惑环节
按照惯例,我先解决小阳子的一些问题。
1、为什么要使用hexo和github搭建博客?——小阳子
1、hexo使用简单,使用命令语句操作,并且使用人数最多主题也各式各样,更 换主题操作也容易,而且支持很多小插件,比如此刻显示在我博客左下角的看 板娘;
2、Github提供免费服务器,入门学习及使用简单 ...
ctf密码学ECC加密,自己给自己挖坑
ECC椭圆曲线加密(一)
由于,做了一道密码学的题,好奇ECC的加密原理,然后自己就给自己开了个坑。
我还真没想到,ECC这么难搞,特指数学菜狗的我。
解题
题目:easy_ECC
已知椭圆曲线加密Ep(a,b)参数为
p = 15424654874903
a = 16546484
b = 4548674875
G(6478678675,5636379357093)
私钥为
k = 546768
求公钥K(x,y)
flag格式为cyberpeace{x+y的值}
我们先把题解决了再说,这个题用到了一个大佬写的工具。先挖个坑,等搞懂ECC后自己要写一个脚本。
参考链接:https://zhuanlan.zhihu.com/p/103665076
椭圆曲线密码学工具 ECCTooL
所以最终答案为cyberpeace{19477226185390}
思考
这个时候,我的一不怎么聪明的朋友,小阳子就该问了:
啥啥啥,这写嘞都是啥?都有RSA了还要ECC干啥?——小阳子
那么,首先我们来看一下ECC的简介。
很快啊,就是一招百度,诶,没放呢。实际上我也看不懂百科。。。。。。
Wh ...
Python(一)为什么学Python
Python(一)为什么要学习Python
前言
每当我去接触新的知识或者去学习新的技能的时候,我的脑海里冒出的第一个问题就是“为什么?”
当然,这个坏毛病坑了我不少,在没搞懂为什么之前,我是很难全身心投入进去的。所以,自学Python的第一章笔记我就准备先把“为什么”解决掉。
在开始之前,我要介绍一个特别好用的思考方法。那就是3W1H原则。
12345CODE1、What :界定问题,搞清楚问题到底是什么;2、Where :寻找问题,这个问题产生在哪个阶段,哪个地方;3、Why :分析问题,结构化分析问题的本质原因是什么;4、How :解决问题,解决问题,应用目标导向思维解决问题;
要不是迫于生活压力,我还是很喜欢采用郝仁的解决方法。
“如果有什么问题是爆炸解决不了的话,那就把这个问题炸掉。”——郝仁《异常生物见闻录》
What?
首先来解决第一个问题,Python是什么?蟒蛇?
首先,遇到不会的问题,就应该搬出来我们的大杀器—搜索引擎!如果有什么问题百度都解决不聊的话,那就说明我们需要换一种搜索方式,换一种思考方式。要知道,还在萌新阶段的时候,我们发出的所有疑问,几乎都可以在 ...