XSS BOT编写

ctf中xss题目常常需要一个管理员小机器点击用户点击的url

之前没有接触过,刚好最近又有这个需要,所以这次尝试写写小机器人的写法

环境准备

首先需要selenium这个python的库

pip install selenium==2.48.0

它的作用是用来webdriver接口的,简而言之是用来控制浏览器的

而它支持chrome webdriver、firefox webdirver、PhantomJS等,但是呢前2个就需要有桌面,而我们的docker环境是没有桌面的,所以就只能选择PhantomJS了

安装PhantomJS

wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 
tar -xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 
ln -s phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs

第一句是从官网下载压缩包,第二句是解压压缩包,第三句是创建link对象

题目准备

首先写个简单的环境

提交xss的页面




    
    XSS game


    



然后写上admin页面,是个登录,登录上去就是admin,会添加flag到cookie

";
	$t = $ans["text"];
    	$sql_delete = "DELETE FROM text where text='$t'";
    	$result = mysqli_query($db,$sql_delete);
    }
    die();
}

?>



    


    

这段代码可能比较垃圾,因为没有借鉴过比赛中xss的脚本,凭着自己的感觉写的,隔离性不是太好

逻辑大致是这样的,因为用户传的内容直接到数据库了,admin的页面功能就是先登录,登录后有个flag的cookie,然后会浏览数据库中的留言,看一条打印一条,然后马上删除

咱数据库里面是这样的

XSS BOT编写_第1张图片

XSS BOT编写_第2张图片

最后附上小机器人杂技脚本,这里使用的是py和sh配合,我在py里面直接写while循环如果nc -lvvp port监听端口后,机器人会挂掉(不是这样监听还是会抛出异常),所以我使用sh来循环执行py脚本

bot.py

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys

url = "http://127.0.0.1/mi04dmin.php"
driver = webdriver.PhantomJS()
def visit():
	driver.get(url)
	driver.find_element_by_name('username').send_keys("admin")
	driver.find_element_by_name('password').send_keys("mi0sijidou")
	data = driver.find_element_by_name('submit').click()

	time.sleep(2)
	driver.quit()
if __name__ == '__main__':
	visit()

bot.sh

while true
do
python bot.py
done

最后能够多次弹cookie,xss平台可以收到

XSS BOT编写_第3张图片

参考资料:

https://www.cnblogs.com/hackxf/p/10429408.html

http://f1sh.site/2017/10/12/114/

https://cloud.tencent.com/developer/article/1043662

你可能感兴趣的:(XSS BOT编写)