前言
申明:本次测试只作为学习用处,请勿未授权进行渗透测试,切勿用于其它用途!
本文来自Anyyy师傅的投稿,在这里谢谢Anyyy师傅!
EduSrcSelect用了xpath爬取了某edu平台的漏洞列表大学(阿这,主要是正则不会),包括标题、时间、作者。可通过输入cookie、查询页数和查找内容进行查询,可以看看有木有重复吧(应该),下载地址在最底下。
Part 1
废话不多说,上图
效果还阔以嘛
脚本分析:
整体>
Step1(title)>
该部分包含使用说明,和作者声明。借鉴了佩奇师傅写脚本的格式,可以关注下他的文库(http://wiki.peiqi.tech/)针不戳
Step2(start)>
我们先讲讲运行部分,把重要的留在后面。
这里先会运行title部分,之后定义cookie值为用户键入的Cookie “str(input(“xxxxxx”))”,之后会将cookie值代入header中进行用户伪装。
之后定义两个值page1,page2作为要查询的起始页和结束页,并用’-’分开 “map(int,input(“xxxxxxx”))” 的方法可使用户输入的值为数字,然后后面会判断page1或者page2是否为0进行报错提示。
最后select值为要查询的关键字,进行标题查询。然后结束会运行下个函数config。
Step3(config)>
这里我用了for循环来给i,k定义两个值。
首先先给i定义区间
range(page1-page2),这里要注意的是page1一定要转化为int类型,否则会报错,其次就是page2要比实际输入的值大1,因为range中第二个值会少1。例如range(1,4),实际为1,2,3。
k定的区间为1到15,因为每页显示15个漏洞。
然后用的就是threading线程,如果嫌运行慢的话,可以将time.sleep()的值改小点,不过越快越不稳定。
Step4(core)>
首先设置目标URL以及header构造(写法参考了HuMoLix师傅,TQL)
先用PoolManager()创建实例,用于处理对象,然后构造header和url以及传参方式
r = http.request(
'GET',
"https://src.sjtu.edu.cn/list/?page="+str(i),
headers= {
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0",
'Host':"src.sjtu.edu.cn",
'Cookie':"sessionid="+str(cookie)
},
timeout = 4.0
)
header方面我是用burpsuite抓edu登陆后首页的包
Cookie上只用sessionid就可以进行身份验证了。
之后用r.data.decode(‘utf-8’,’ignore’)就可以将爬出的内容显示出来了,这里如果不用utf-8解码会出现汉字显示不出来
至此爬取网页的部分已经成功,接下来要做的就是将爬取的内容进行筛选我们想要的内容
在讲xpath前,推荐大家chrome安装个xpath helper插件
可以直接在chrome应用市场下载
点击xpath helper插件,选取想要的内容,按Shift+X就可以显示内容在整个网页的位置了
这里只用tr的部分,前面的都可以忽略不要(注意前面删除好要在”/tr”前加/)
有了目标的path后,一切都好办辽。
先用etree.HTML(html)将html的字符串解析为HTML文档对象,将字符串转变成_Element对象。
再用lxml中_element的xpath来将文本内容转化为值
这里要注意的是在我们原有的路径上要加上”/text()”否则识别不出来,其次是用normalize-space将爬取的内容中的空格去除,保证文本准确性。然后根据不同漏洞的标题、时间、作者中”[]”的变化,用我们之前定义的’str(k)’来代替。
最后出来的就是完整的标题、时间和作者了。
3)主要部分完成了剩下的就是修饰了。接下来是查询部分,这里我用了if来判断用户输入的内容是否在标题中存在,若存在则输出”页码”、“时间”、“标题”、“作者”,并创建一个在桌面的文本写入漏洞列表(可更改路径),若没有则输出”未找到目标”。颜色代码挺好用的~ “ 33[xxm(text) 33[0m”
完工。
PS:
本人python初学者,写了挺久的吧,哪些不好的地方师傅们可以指点下,我可以改进下。Cookie要登录后获取,获取方法我在脚本运行说明写了~本来我是打算通过输入账号密码的形式获取的,结果发现edu的验证码很奇怪获取不过来哈哈(还是我太菜了)然后不输入cookie也是可以的,就是未登录和登录后显示的标题是不一样。还做了个查询自己漏洞状态的脚本PassSelect,我个人感觉帮助不大就不详细讲了,EduSrcSelect和PassSelect脚本的地址附下:
EduSrcSelect:
https://pan.baidu.com/s/1VzcPESM6enj3G_yrXAlB5w
提取码:f77r
PassSelect:
https://pan.baidu.com/s/1bjvWEX-Ed8wPb5-WA9rTW
提取码:fvqp
那就长按二维码,关注我们吧!
本文始发于微信公众号(F12sec):经验分享 | 利用xpath爬取edu漏洞列表
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论