python+selenium模拟点击实现自动化
0. 前言人生苦短,作为一个黑客,重复工作自动化是一个非常必要的选择。
这里笔者由于英文水平不过关,还想看国外的课,所以需要来个中文字幕,国内好用的是网易见外,他可以网页操作,翻译质量还是可以的。
但由于课太多,每一节课的上传、翻译、导出都人工就太浪费生命了,所以我选择selenium来完成模拟点击操作,具体如下:
1. 环境搭建
首先需要安装下selenium库,selenium已经出到4.x版本了,但python 3.x好像还是不能兼容,所以我选择了比较稳的selenium-3.14.0 安装直接 pip install selenium=3.14.0 即可
接下来需要安装浏览器驱动,可选的有chrome和Firefox,下载完成后解压放在一个目录,记住路径,比如E:\WebDriver
Chrome驱动文件下载:点击下载chromedrive
Firefox驱动文件下载:点解下载geckodriver
最后配置刚下载的Webdriver驱动的环境变量,我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path下添加对应环境 ...
Docker入门
Docker从发布到现在,可以说是开发者必学的一个软件了,提供了高效的的环境配置迁移方案,可以说非常好用了。
作为一个安全从业者,平常的逆向工作也是需要各种各样的配置环境的,基于此我也凑个热闹学习一把Docker,省得在折腾环境中浪费生命。
1. 虚拟机和linux容器虚拟机这玩意就不多说了,平常用虚拟机的时间比用主机上系统的时间还长。它缺点还是显而易见的:启动慢,占用资源多;除了提供基础的操作系统环境外,其它各种依赖还是得重新整;迁移起来成本也高。
而linux容器(LXC)就是linux发展出来的另一种虚拟化技术,它是通过对进程进行隔离或者说是在进程外面套了一个保护壳来实现虚拟化的。对于这层保护壳(容器)里面得进程来说,它接触到的各种资源都是虚拟的,进而实现了进程级别的系统隔离。这样的架构使得它:启动快,占资源少,多个容器可共享资源;体积小只需包含必要的组件即可。
总之,容器就有点像轻量化的虚拟机,能够提供虚拟化的环境,但成本开销小得多。
2. Docker知识终于说到Docker了,Docker是啥呐,说白了就是一款封装好的linux容器,提供了易用的容器使用接口。也就是把应用 ...
libzmq远程代码执行漏洞(CVE-2019-6250)分析
概述ZMQ(Zero Message Queue)是一种基于消息队列得多线程网络库,C++编写,可以使得Socket编程更加简单高效。
该编号为CVE-2019-6250的远程执行漏洞,主要出现在ZMQ的核心引擎libzmq(4.2.x以及4.3.1之后的4.3.x)定义的ZMTP v2.0协议中。
环境搭建环境先搭建个测试poc和后面调试漏洞的环境,这里用到了:
Ubuntu 20.4.2
libzmq 4.2.x以及4.3.1之后的4.3.x这几个版本都可以触发漏洞,下载后切换版本安装即可测试 项目地址
cppzmq 用来调用libzmq执行代码,测试poc 项目地址
poc地址在这
poc测试将libzmp和cppzmq都安装好,其中libzmp是configure来安装的,cppzmq是cmake来安装的,安装过程简单。
都安装完后,cppzmq下有个demo目录,下面也 cmake ./编译,完成后即可在demo这里堆main.cpp修改来进行漏洞测试,main.cpp代码如下:
1234567#include <zmq.hpp> int main(i ...
pwnable.kr系列刷题之15-cmd2
另一道关于命令行的题目:
ssh连上,密码为cmd1的flag内容,mommy now I get what PATH environment is for :)
查看cmd2.c源码:
12345678910111213141516171819202122232425262728#include <stdio.h>#include <string.h> int filter(char* cmd){ int r=0; r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd, "/")!=0; r += strstr(cmd, "`")!=0; r += strstr(cmd, "flag")!=0; return r; ...
pwnable.kr系列刷题之14-cmd1
看提示又是一道环境变量相关的题目:
ssh连上看看:
还是把cmd1的源码下回来或者直接在服务器上复制回来查看:
12345678910111213141516#include <stdio.h>#include <string.h>int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r;}int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); ret ...
pwnable.kr系列刷题之13-lotto
又回到了熟悉得ssh连接的题目,看题目描述是一个大乐透游戏:
连上去查看文件,玩一下,顺便把lotto.c源码下载到本地:
游戏玩法大致如下,每次输入六个ascii值小于46的字符,去匹配,都匹配到即可中一等奖拿到flag:
lotto.c源码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h> unsigned char submit[6]; void play(){ int i; printf("Submit your 6 lotto b ...
pwnable.kr系列刷题之12-blackjack
题目是一个游戏blackjack(我们叫做21点),获取flag条件就是赢成百万富翁
连上去看,就是玩游戏,还有游戏说明之类的,游戏起始资金$500,不知道是不是伪随机,反正靠运气赢到100w就是在做梦了。
游戏提示界面:
游戏开始界面:
分析:
这游戏就是找漏洞,源码已经给了,在源码链接处,不过好像挂了,搜索了一番,找到别人贴的源码,我在文章末尾也放了一份备份。
先玩几把游戏,熟悉一下流程,发现没啥思路,那还是直接去读代码吧,漏洞点肯定是和赢钱和输钱的处理有关,因为我们这里也就bet这一个输入点。游戏是一个简单的命令行程序,逻辑倒不复杂,直接去paly()中分析,cash是总钱数,bet是每次赌的钱数,这里程序处理逻辑有个明显的漏洞也就是对于bet他没有限制正负只限制了正数的大小,然后输赢都是简单的把bet加减到cash中:
要知道用户是不稳定的,你并不知道其会做出什么操作或者输入什么东西,所以对于用户的输入需要考虑到所有的情况然后过滤。那这里的漏洞利用方式也就很明显了,直接押注-1000000就可以了:
源码:
123456789101112131415161 ...
pwnable.kr系列刷题之11-coin1
本道提示让我们通过nc命令链接,所以直接连上去看看:
题目大概意思是:现在手里拿着一些金币,其中一个是假币,假币和真币外观一摸一样,但是重量不同,真币重10假币重9,然后我们找到100枚假币才会得到flag。我们会获得一些硬币(N),然后设定规则对某一组硬币称重,在有限的C次机会内找到假币。最终需要在60s内完成游戏100次,即找到100枚假币来完成游戏。
分析:
题目是一个和漏洞关系不大的coding题目,主要是二分法查找,还是做一下吧,这里记得先随便用个之前的题目ssh登录到服务器在解题比较好,因为这玩意儿要完成100次,网速不稳定就会在中间某次请求超时失败,所以登录服务器本地做题。比如使用前面的inpu2题目登录,在/tmp/下新建coin目录(得新建目录才可以),然后再coin/下写代码并执行即可。
写好的代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import socketimport res=socket.sock ...
shellsock漏洞(CVE-2014-6271)分析
概述 在刷pwnable.kr的题目shellshock时,碰到了这个bash的老漏洞,这里我也对其分析一下,做个记录。
shellshock破壳漏洞,是一个高危的漏。漏洞原理简单来说就是子进程bash在获得父bash进程传递的shell环境变量时,对函数定义的变量解析除了问题,导致了任意代码被执行。
该漏洞可以分为本地利用和远程利用两种,其远程利用危害性极强,攻击者可以利用该漏洞精心伪造数据,通过网络请求到一台利用bash脚本来处理用户请求的网站上,来直接或间接的触发一个bash脚本,这样就可以远程执行而已代码了。
经测试,从bash1.14 到4.3都存在这样的漏洞。
环境 我是在ubuntu中玩耍的,先确定自己bash版本,新的ubuntu自带的bash版本都是4.3以上的,不存在shellshock漏洞,所以需要自己手动安装低版本的bash:
从gun.org/software/bash选择一个国内的镜像源,然后把bash-4.1下载并进行安装:
12345wget https://mirrors.aliyun. ...
pwnable.kr系列刷题之10-shellshock
看提示信息是和bash相关:
ssh链接查看:
很熟悉的几个文件,把shellshock.c下载查看源码分析:
1234567#include <stdio.h>int main(){ setresuid(getegid(), getegid(), getegid()); setresgid(getegid(), getegid(), getegid()); system("/home/shellshock/bash -c 'echo shock_me'"); return 0;}
分析:
很短的几行代码,这里需要了解一下Linux下进程权限问题,才好理解3、4行代码。
linux下进程权限有这么几个相关的属性:
ruid/rgid(实际用户id:real userid,real group id):由启动进程的用户来决定,通常是当前登录用户(即运行可执行文件的用户)
euid/egid(有效用户:effective userid,e ...