python xss相关的编码解码小脚本
1.功能分析:
实际工作中经常会遇到alert()之类的函数被防火墙过滤,而把alert()转化为ascii码放到String.fromCharCode()中就可以绕过,之前会一个一个查ascii表,比如a对应97,l对应108...最后得出alert(1)的ascii码97,108,101,114,116,40,49,41 发现这样太费时间,就用写了个python小脚本,方便做测试用.
后来索性又加了下面这些功能(支持解码),整体写的很挫很糙,但是这个不重要,用着方便就行了~~~
字符串←→ASCII码 a → 97
字符←→js-Unicode 特殊符号请在前面加^ a → \\u0061
字符串←→js-16进制 a → \\x61
字符串←→js-8进制 a → \\141
字符串←→html实体编码(16进制) a → a
字符串←→html实体编码(10进制) a → a
2.用法:
需要安装python3
python3 kpy.py 模式[a,A,b,B,c...] 字符
没有python3的话
用这个exe也阔以~~~
kpy.exe 模式[a,A,b,B,c...] 字符
字符串转ascii
python3 kpy.py a alert(1) |
>>97,108,101,114,116,40,49,41
ascii转字符串
python3 kpy.py A 97,108,101,114,116,40,49,41
>>alert(1)
3.代码分析:
太粗糙的代码,还分析个毛~~
#coding="utf-8"
import sys usage=''' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 使用方式:python3 kpy.py N(模式:a,b,c...) S(需要转换的字符:) |
+ +
| python3 kpy.py a alert(1) |
+ >>97,108,101,114,116,40,49,41 +
| |
+ a(A) 字符串←→ASCII码 a → 97 +
| b(B) 字符←→js-Unicode 特殊符号请在前面加^ a → \\u0061 |
+ c(C) 字符串←→js-16进制 a → \\x61 +
| d(D) 字符串←→js-8进制 a → \\141 |
+ e(E) 字符串←→html实体编码(16进制) a → a +
| f(F) 字符串←→html实体编码(10进制) a → a |
by:mkdd@kpy
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
'''
print(usage) look=['"','\'','&','<','>']
name=['"','&apos',' &','<','>']
num10=['"',''','&','<','>']
num16=['"',''','&','<','>'] # 字符串转ASCII码
def aa(x):
a=[]
for i in x:
a.append(str(ord(i)))
return(','.join(a)) # 字符转 js-Unicode 特殊符号请在前面加^
def ab(x):
a=[]
for i in x:
a.append('\\u'+''*(4-len(str(hex(ord(i)))[2:]))+str(hex(ord(i)))[2:])
return(''.join(a)) # 字符串转 js-16进制
def ac(x):
a=[]
for i in x:
a.append('\\'+str(hex(ord(i)))[1:])
return(''.join(a)) # 字符串转 js-8进制
def ad(x):
a=[]
for i in x:
a.append('\\'+str(oct(ord(i)))[2:])
return(''.join(a)) # 字符串转 html实体编码(16进制)
def ae(x):
a=[]
for i in x:
a.append('&#x'+str(hex(ord(i)))[2:]+';')
return(''.join(a)) # 字符串转 html实体编码(10进制)
def af(x):
a=[]
for i in x:
a.append('&#'+str(ord(i))+';')
return(''.join(a)) # ASCII码转字符串,逗号隔开
def aA(x):
x=x.replace(' ',',').split(',')
for i in range(len(x)):
x[i]=chr(int(x[i]))
return(''.join(x)) # js-Unicode js-16 js-8转字符串
def aB(x):
return x.replace(',','')
def aC(x):
return x.replace(',','')
def aD(x):
return x.replace(',','') def aF(x):
for q in range(len(name)):
x=x.replace(name[q],num10[q])
if x[-1]==';':
x=x[:-1]
return aA(x.replace(';',',').replace('&#','')) def aE(x):
for q in range(len(name)):
x=x.replace(name[q],num16[q])
if x[-1]==';':
x=x[:-1].replace('&#x','').split(';')
for i in range(len(x)):
x[i]=chr(int(x[i],16))
return ''.join(x) b=("a%s(\'%s\')"%(sys.argv[1],sys.argv[2]))
print((20-len(eval(b)))*'-'+('\n'+(20-len(eval(b)))*' '+'|')*5+'\n'+(21-len(eval(b)))*' '+(20-len(eval(b)))*'-'+'→ '+eval(b)+'\n'*8)
python xss相关的编码解码小脚本的更多相关文章
- Python学习之==>URL编码解码&if __name__ == '__main__'
一.URL编码解码 url的编码解码需要用到标准模块urllib中的parse方法 from urllib import parse url = 'http://www.baidu.com?query ...
- python 基础篇 06 编码 以及小知识点补充
本节主要内容: 1. is和==的区别2. 编码的问题 ⼀. is和==的区别1. id()通过id()我们可以查看到⼀个变量表⽰的值在内存中的地址 注 ----<<<在pytho ...
- 【Python】二进制转ASCII码小脚本
#coding:utf-8 #developed by carrypan! import binascii import optparse def main(): usage="%prog ...
- 分享几个python小脚本
by 梁凯 今天我想给大家分享几个python脚本,分别是: 1.公司访问外网认证脚本(最初有同事写过,我优化了一下). 2.统计周报系统所有同事的最近一篇周报. 3.统计测试技术分享里指定一个月所有 ...
- python摸爬滚打之day06----小数据池、编码解码
1.小数据池 代码块: 一个模块, 一个函数, 一个类, 甚至每一个command命令都是一个代码块. 一个文件也是一个代码块.而不需要创建一个新的数据. 这样会节省更多的内存区域. 在cmd命令行 ...
- python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...
- 编码 解码 python
之前一直对python文件中编码解码糊里糊涂,今天看到一篇文章,觉得把我讲的有点明白了.写个心得吧. 1.编码解码是怎么一回事? Python 里面的编码和解码也就是 unicode 和 str 这两 ...
- day06 python is == 编码 解码
day06 python 一. is 和 == 的区别 == :比较, 判断, 比较的是值: 可以比较数字, 字符串, 列表, 元组, 字典,等 is :是 比较, 比较的是内存地 ...
- python Unicode 编码解码
1 #将Unicode转换成普通的Python字符串:"编码(encode)" 2 unicodestring = u"Hello world" 3 utf8s ...
随机推荐
- PHP的ob_flush()与flush()区别
PHP的ob_flush()与flush()区别 标签: php ob-flush flush buffer 2017年03月24日 17:50:393248人阅读 评论(0) 收藏 举报 分类: ...
- python测试开发django-1.开始hello world!
前言 当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,想学pytho ...
- pyautogui 文档(一):简介
PyAutoGUI 可实现控制鼠标.键盘.消息框.截图.定位等功能,最近做了个自动化需要这些,故了解并记录下 自动化需要操作win7上的一个app,用PyAutoGUI做的,定位坐标,点击鼠标等,但是 ...
- String 和 StringBuffer、StringBuilder
String为什么不可变? 简单的来说:String类中使用final关键字字符数组保存字符串,private final char value[],所以 String 对象是不可变的.而String ...
- 《Java从入门到精通》学习总结1
1. Java既是编译型语音,也是解释型语言:先将源代码编译成Java字节码,然后Java虚拟机对Java字节码进行解释运行 2. 使用命令行编译Java源代码时,如果代码中有中文,在编译时需要指定编 ...
- 使用CSV控件方法实现参数化
一.录制脚本 二.下面介绍如何使用CSV控件方法实现参数化 1. 添加-->配置元件-->csv Data Set Config Filename:文件的来源 Variable Name ...
- Mapbox Studio Classic 闪退问题解决方案
之前安装过Mapbox Studio Classic 0.38,好久没有用了,今天用的时候发现不停的闪退,经过一番折腾,发现删除 %USERPROFILE%\.mapbox-studio 目录下所有文 ...
- tiny4412--linux驱动学习(1)
1,概述 linux设备驱动分为三种:字符驱动设备.块驱动设备.网络设备 架构: 1,字符设备驱动 是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符 ...
- python基础之Day14
一.生成器 1.什么是生成器 在函数内但凡出现yield关键字,再调用函数就不会执行函数体代码,会返回一个值,该值称之为生成器,生成器本质就是迭代器 2.为什么要有生成器 生成器是一种自定义迭代器的方 ...
- SpringBoot跨域问题
1.先来说说跨域原理: 跨域原理简单来说就是发起跨域请求的时候,浏览器会对请求域返回的响应信息检查HTTP头,如果Access-Control-Allow-Origin包含了自身域,则允许访问,否则报 ...