python脚本与xss入门
python脚本编写
request库中带有get,post等方法,可以发送http请求,脚本编写中经常调用这个库
如:x = requests.get(url,params)
这样调用请求后,同时也会返回一个response对象,其中包含响应信息
1 | print(response.status_code) # 获取响应状态码 |
调用的一般形式为
1 | requests.get(url,params,args) |
其中data内的内容使用键值对传递
这就是request库的常见使用方式,我们还经常使用re库,用以正则匹配
使用方法
1 | re.match(pattern, string, flags=0) |
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位
ctf中有利用python脚本进行速算,多次请求爆破等题目
bugku-速度要快
首先发包,在header中发现flag,拿去两次base64解密
1 | 102272 |
尝试post后发现不行,因为这个值一直在变化
我们可以在header中截取flag,利用python脚本发包以保证速度
1 | import requests |
使用session保持会话,flag第一次解码后是由“:”分成两段,取第二段,并解码,发送margin
flag{640832d6b0941215ef364b5ed76acbe1}
bugku-秋名山车神
进入后发现是速算,+,-,*
给出的计算式如432664942-586204598-1449092086+1320886302+2019484813+458168165-596763586-24579723+1744057660+174270215*2089368842=?;
我们在编写脚本时要使用正则表达式,(\d+[+-*])+(\d+) 这里中括号的-实际上是转义的,即为反斜杠-
先匹配一个 数字与符号(+-*)的组合,再匹配最后一个数字
1 | import requests |
保持会话,从页面获取内容并正则匹配,group表示为返回字符串,这个字符串是一个数学表达式,我们通过eval函数执行后,将会进行计算
flag{96fd1901b425291f1f3e338a0745cad5}
xss(跨站脚本攻击)入门
xss一般是由于前端过滤不完全,攻击者构造的攻击脚本如js脚本未经处理而执行成功,这种漏洞一般分为以下三种类型
存储型:这种类型的XSS攻击会将恶意脚本存储在目标服务器上,当其他用户访问包含恶意脚本的页面时,这些脚本会在用户的浏览器中执行。
反射型:这种类型的XSS攻击是通过将恶意脚本嵌入到URL中,并诱使用户点击该URL。
基于DOM的xss:攻击者通过修改网页中的DOM节点或属性来注入恶意代码,而不依赖于服务器的响应。
实例:xsslabs-level2
这里有个框专门进行xss,我们先使用”>闭合前一个标签,再使用//注释掉尾部的引号,并插入js语句
即在输入框内输入”>//
可以在查看器里看到前一个标签成功闭合,Js被成功插入并执行
xsslabs-level3
输入上一题的内容,发现标签被转为实体
利用html的事件触发alert来过关,本题为单引号闭合
‘ onblur=’alert(1)’
传入后鼠标从输入框离开即可触发alert