网络破防实践先导实验三————用DLL注入实现扫雷外挂
关于这次实验在完成了前两个炒鸡炒鸡炒鸡炒鸡炒鸡炒鸡难的实验之后, 老师终于兑现了承诺——后面的实验不会太难。这个扫雷外挂实验非常滴简单,前前后后从写程序到写实验报告只花了三个小时,但是整个实验还是非常有意思的啊。
前置知识在开始做实验之前,先介绍一点前置的知识:
Windows消息传递机制简单解释一下:
消息机制也很好理解,就是Windows的应用程序,硬件,软件都会在交互的时候发送消息,一条消息里面可能包含许多信息。哎呀大概就是这个意思,详情可以看这个。
DLL文件
DLL即动态链接库(Dynamic-Link Library)的缩写,相当于Linux下的共享对象。Windows系统中大量采用DLL机制,甚至内核的结构很大程度依赖于DLL机制。Windows下的DLL文件和EXE文件实际上是一个概念,都是PE格式的二进制文件。
DLL属于动态链接,一般在加载时动态链接或者运行时动态链接。DLL文件可以在程序执行的任意时刻注入以完成自己的需求。
DLL注入实现扫雷外挂首先,先配置一下环境,下载个VS,勾选必要的组件,然后新建一个DLL工程,写一个监听键盘监听的函数
其中FindWindowA里的两个参数就是扫雷游戏窗口名称和属性:
获取扫雷窗口名可以用微软官方的spyxx工具,使用起来也是很简单,打开之后,找到那个望远镜,然后再瞄准镜拖过去,就可以找到窗口的名称和属性了
接下来,就可以开始写DLL注入了。我们都知道,数据是存在内存中的,只要我能读取扫雷中内存存储的那一块内存,就可以知道地雷的位置,然后再配上模拟点击,就可以一键扫雷了嘎嘎嘎。
分析扫雷想要扫内存,可以用经典的辅助工具 Cheat Engine,从名字就可以看出这是一个拿来作弊的工具力。经过一顿简单的操作,我很容易就找到了雷区在内存的分布。
经过简单的分析就可以知道:
10是雷区的边界,包裹住 ...
东滨路249号的回忆
东滨路249号的回忆:
好好考试,想朋友,想肥家啦
今天看见好多学校的共享文档
心想着咱浦中也要来一个⑧ 没有人弄的话就我来
人离开了浦中才懂得那段时光的美好与珍贵
所以大家就在这里分享关于浦中的回忆吧!
希望这个共享文档可以成为大家的一个心灵港湾,累了就来这里看一看,聊一聊,拒绝emo!
欢迎浦中学子激情转发!
洁己以进,反身而诚
回忆录规则:为方便阅读,每一个话题前用“**# 话题”式,同时加粗斜体14号字,想到其他的话题大家也可以自行添加;回复时,统一用12号字**,Re加内容,如:Re:回复内容;如果你想附上自己的名字,可以在Re后面加上括号,如:Re(苏总):回复内容”
还有还有,文明用语!适度调侃!不要人身攻击!
不要随意篡改别人的编辑内容!!
互联网不是法外之地!
编辑的时候尽量小心一点,不要手滑了嗷
可以插入图片噢~
现在文档录下了炒鸡多浦中的回忆,想方便查找的话
手机查看可以点击右上角的三条杠里的
“显示目录”更加方便快捷哦
目录参考2021.12.27:
# 大家现在在干什么?Re:为了明年再一次机会,体检
Re(同下):找不到刚才的,再来一次。迎着桂林的妖风跑步(╥╯^╰╥)
Re(人在天津):刚回到柳州跟女朋友耍 ̄  ̄)σ
Re(人在桂林):在图书馆泡着复习工程力学和电路分析,下两周还有电工实习,害怕卵蝶
Re(丁字尺战士):我先来!人在成都,现在在敲论文。
Re(人在民大):正和我的小宝贝约会呢
Re (海大学牲):人在青岛,现在还在睡觉哈哈哈🥳外面太冷了
Re(为人民服务):上海的冬天终于来了,手都要冻麻了,虽然只下了三分钟的小雪花,但在上海这个地方,能看见雪也是一件令人兴奋的事情 ...
eprime实验注意事项
z咱就是说,写个注意事项,方便调试程序,还能避免很多问题。这个链接一直都有更新,有问题随时来这里查
1.开始实验之前记得切换输入法至英文不然实验跑起来之后,点击键盘会会弹出输入法
2.点击空格不能太快因为记录RT(Response Time)是从麦克风图标出现后才开始记录的,如果受试在麦克风图标出现之前就点击,则会记录不上RT,这种情况在视觉刺激组特别容易出现,可能需要提醒受试。
3.系统录音机打开方式点一下Win图标或者Win键
搜索 “ voice ”
打开即可(录音机打开又一点点慢,需要耐心)
4.强制终端实验方法Ctrl + Alt + Shift,这样子中断实验会导致数据记录不上
5.实验结束后要收集的数据如图,在程序文件夹下:
每次做完一个人,最好就把这俩份东西拷贝出来,然后再删掉原来的这两个,再进行下一个实验,否则如果实验者输错序号会把数据覆盖掉的,,,
6.实验前给受试分配好编号,并监督受试输入正确的编号这样能防止数据与人的录音不匹配
7.运行EPrimer出现“Your system is in violation of the license agreement”错误
原因:是破解版到期了,需要重新破解一下
解决方法:关闭Eprimer,然后打开安装Eprimer的文件夹,双击e-prime2.0.reg
e-prime2.0.reg
然后会弹出一个弹窗,点击“是”即可
然后再重新双击实验文件开始运行
IC卡金额算法破解的一次尝试
时隔快一年,终于想起来要更新IC卡算法破解的第二期了。之前第一篇关于水卡密钥算法的破解那篇博客,还是我高三时候写的了,现在大一了,写出的东西也会不一样了。这次会介绍的详细一点了。
第一篇博客传送门:IC卡秘钥算法破解的一次尝试,不过那也只是我高中时候对水卡密钥的理解,现在已经不一样了。OK,现在我来介绍我最近一次,帮别人研究水卡金额的算法的一次尝试,感谢@W提供素材。
警告:本文仅供学习讨论使用,请勿拿去进行其他不法用途,出什么问题,本人概不负责。
0x0.前言本来没打算写金额篇的,因为高中那会,能力有限,还不能很了解金额算法的一些原理。现在大学了,不在高中,数据也拿不到了,也写不了。但是天无绝人之路,感谢**@W老铁给我提供了数据,让我得以完成水卡算法的第二个部分——金额篇**
0x1.数据准备这次的数据,可以说是非常的详细,而且数据量也很大。据不完全统计,足足有78条金额数据!!!这么大的数据量,给我的破解提供了很大的便利。
0x2.开始破解算法拿到数据后,大概了解了一下数据的分布的格式,发现其格式是非常有规律的,如下:
前面四位是存储金额的地方,理论最大值是FFFF,也就是655.35元。
中间四位是刷卡次数
后面四位是校验位,也就是本次破解算法的重点
知道了要破解的数据后,就到了分析数据的环节,这时候就需要大量的数据了:
密密麻麻的数据(晕),这次的数据比较规整,这很利于我们进行数据分析。还记得当时,上C艹课的时候,太无聊了,就在研究这个数据,当时的我还是抱着之前密钥算法破解的思维来尝试破解这个金额算法,这个思维有好处,也有坏处。好处就是我很容易就知道从哪里入手分析,坏处就是,看问题不够全面。不过这些都是正常问题啦。OK,回到主题。
我一开始发现的是后四位的第二位和第四位数字的和,是一个定值——8,例如:
9147 :1 + 7 = 8
89 ...
记录一次和键盘侠的正面硬刚(利用社工库+某些接口)
本来这几天都没啥时间和心思写博客的,但是呀这几天发生了一些有意思的事,让我有了写博客的素材(其实还是我自己想写辣XD)。
就是,前两天,在高中的表白墙下面有一个牛马(这不是我骂人,是它本来的ID就是🐂🐎),在那里骂人,我呢,和几个同学在那里输出DK它。
然后,我方一号输出——军委主席LYG,一鼓作气扛起了输出的大旗,给了对方精确的打击,对方急眼了,遂在评论区下和军委主席互相输出,但是它文化水平,可能不够高。
脏话,人身攻击啥的一大堆,非常恶心,这时表白墙君(以下简称墙)看不下去了,遂删评。然而,那个牛马并不死心,在墙的最新一条动态下,直接对易烊千玺进行了人身攻击。
军委主席看不下去,遂开始冲锋。在主席带领下,我们九班势力开始冲击这个牛马。
而我,刚好最近这几天有稍微研究研究社工库的一些东西,所以打算利用社工库来搞这个牛马一波,于是便有了这篇博客。
1. 利用社工库进行QQ反查SJH这个牛马的QQ,看了一下,只有一颗星(也就是一级)看起来是小号,不过也可能是隐藏了等级信息之类的,因为它设置了不可被搜索到,所以得用一个接口才能查询到它的资料:http://api.avak.cn/fqq/?qq=430892126
想要从这个QQ号找到一些信息,先从社工库入手。
首先呢,打开TG,找到红鼻子bot,发送想要查询的字段,就能查询到结果了:
2.通过手机号查询相关信息可以看到,查到了一个绑定的手机号,但是。由于社工库中被泄露的Q绑,可能是很久之前的了,真实性也许不高,所以还得验证一下这个手机号是不是那个牛马用过或者曾经用过的。
查询一下这个手机号的一些关联信息
可以看到,这个手机号应该也很久没有使用了,应该不是牛马现在正在使用的手机号,想要知道现绑,可以通过忘记密码来看看手机号某几位:
看来,查出来的只是旧绑而已,现绑是很难查出来了。
唯一的办法,只能假定这个牛马是我们 ...
我的一些常用的工具函数(持续更新)
之前写的一些有意思的函数,因为每次自己再敲一遍又很麻烦,故写好了可以直接复制就可以用了
1.跑跑弱口令字典之前一个课上用的,字典是从github上找的:https://github.com/fuzz-security/SuperWordlist
1234567flag = Falsewith open("MidPwds.txt", "r",encoding='utf-8') as f: for line in f.readlines(): line = line.strip('\n') if line == pwd: flag = True break
2.发邮件函数自己封装了个发邮件函数,写一些自动化任务可能会用到
需要的参数:
邮箱
邮箱TOKEN
需要用到的库:
smtplib
email.mime.text
email.utils
1234567891011121314151617181920#需要用到的库import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr# text 是你需要发送的内容,email 是邮箱,可以传入一个或者一堆def email(text,email): my_sender = '你的邮箱' my_pass = "邮箱TOKEN" msg=MIMEText(text,'plain','utf-8') msg['Subject']=& ...
一些常用的git命令
记录一些git的用法,怕之后的我给忘了(虽然已经忘记几次了)
1.克隆仓库克隆之前,先新建一个文件夹,进入后右键打开git bash,初始化git
1git init #初始化仓库
然后就可以直接克隆仓库辣
1git clone URL 克隆仓库
之后可以直接pull下来,获取最新版本
1git pull 本地与服务器端同步
2.上传在上传到服务器之前,需要先提交到本地仓库
1git commit -am "init" 提交并且加注释
然后就可以推到远程服务器辣
1git push origin master 将文件给推到服务器上
3.其他其他一些可能会用到的命令
123git status 查看当前状态git log 看你commit的日志
网络破防实践先导实验二————ROP攻击
1.前言终于在熬过了第一个实验之后,来到了老师所说的,比第一个简单一点的实验。然而,事实证明,老师在画大饼: (。第二次实验直接让我们利用二进制漏洞对程序进行攻击,拿到Flag。这有多难呢,这次上课在讲解实验的时候,就有好多人退课了,你没听错,上着上着课就退课了他们。不过抛开难度不谈,这次实验确实很有趣,不仅有种打游戏收集成就的感觉,还学到炒鸡多东西(没错,比上一个实验学到太多太多东西了),所以我很快啊,啪的一下就来写博客记录了。
2.实验概览这次实验的主题是二进制漏洞,课上,Aidai学长给我们讲解和演示了如何利用二进制漏洞进行ROP。关于ROP:
ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。所谓 gadgets 就是以 ret 结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。之所以称之为 ROP,是因为核心在于利用了指令集中的 ret 指令,改变了指令流的执行顺序。ROP 攻击一般得满足如下条件
程序存在溢出,并且可以控制返回地址。
可以找到满足条件的 gadgets 以及相应 gadgets 的地址。
如果 gadgets 每次的地址是不固定的,那我们就需要想办法动态获取对应的地址了。
学长主要介绍了**ret2text **和 **ret2libc **两种类型的攻击手段。这次我们攻击的目标是一个Reperter程序。
3.实验介绍0)基础介绍在开始讲实验操作之前,先讲点基础知识:
Pwntools
pwntools是一个CTF框架和漏洞利用开发库
用Python开发,旨在让使用者简单快速的编写exploit。
文档:https://docs.pwntool ...
网络破防实践先导实验一————数组越界检测心得
1.前言网络攻防实践先导,听着名字很高大上吧,正如它的名字那般,它的难度也是非常的大: (。作为一门今年新开的课,属于四门先导课程之一(剩下三门分别是软件工程先导、人工智能先导和忘了叫啥先导)。在上学期选课的时候,110人的课,选了139人,可见其火爆程度,也许是网络和攻防这两个要素吸引人,所以这门课的第一个实验——数组越界的检测,与上述两点看起来似乎没有丝毫关系,但是难度还极大,这就造成了,很多人退课(毕竟才0.5学分)。截止至2022年4月1日02点54分,139的课现在还剩39人…….我捏,有幸忝列其中。这足以看出这门课有多难了吧,接下来我给大家分享一下我写这门课的一些心得与体会吧(主要是写给自己看的,要是有不认识我的人看到了这篇博客,算你厉害🤔)
2.实验介绍实验的要求很简单,编写一个文件checker.cpp,要求实现数组越界的检测。以下是原话:
本次实验自拟了一种类似C语言数组的语法,称为easy C,其仅包含简单的变量声明,算术表达式和数组操作,文件后缀为.ec。本次实验的目的是使用c++语言编写一个检测程序,检测输入的.ec文件中数组使用的索引值是否超过数组定义的最大长度。
看起来,似乎很简单,巴特,然并不。
3.实验分析由于使用了自定义的easyc语法,所以逻辑上和我们平时的c语言有些许不同,但是还好,easyc简化很多东西,使其变得和Python语法那般简洁。在easyc中,程序执行被分为两部分:变量赋值VarDef(保存在VarDefList) 和 数组引用ArrayUse(保存在ArrayUseList),执行顺序上,先执行完所有变量赋值后,再进行数组引用。我们的任务就是,遍历这两个部分,遍历其中的和数组越界有关的表达式,并判断其是否越界。在存储结构中,变量的定义和数组的引用大量的用到了树结构,如下图:
上图中VarDefList元素从0开 ...
用ssh连接服务器和使用pycharm把代码同步上服务器的方法
1.SSH连接服务器首先需要安装一个远程连接客户端(我用的是Final shell,用别的也行)
然后在软件里新建一个连接
这里,主机名是服务器的公网IP,端口默认22,底下,使用密码登录,
连接成功后就可以操作服务器了
2.用pycharm把代码同步上服务器(需要pycharm专业版)首先打开pycharm专业版(社区版没有这个功能好像),打开项目,左上角选择File–settings
新增一个SFTP连接,然后点右边的SSH configuration的三个点,新增SSH连接
账号密码同之前SSH远程登录时的账号密码
然后重点来了,接下来这几步不能错,不然可能会把文件覆盖掉
首先在Root path中,选择你想要的根目录,之后在Web server URL处填入你的远程服务器地址。
然后选择上方Mappings栏
本地路径设置,这里就设置你本地的Django项目的路径(就是manage.py的路径)
配置完成后,点击OK,接下来就是从服务器下载和上传代码
在pycharm项目的首页,文件树那里,右键,往下滑选择Deployment,里面的下载和上载就是同步操作
可以通过这个把代码同步上去。上传大概需要几分钟左右即可