您的位置 首页 网络安全

利用xpath爬取edu漏洞列表

简介: EduSrcSelect用了xpath爬取了某edu平台的漏洞列表大学(阿这,主要是正则不会),包括标…

简介:

EduSrcSelect用了xpath爬取了某edu平台的漏洞列表大学(阿这,主要是正则不会),包括标题、时间、作者。可通过输入cookie、查询页数和查找内容进行查询,可以看看有木有重复吧(应该),下载地址在最底下。

废话不多说,上图

效果还阔以嘛

脚本分析:

整体>

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)>

  1. 首先设置目标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解码会出现汉字显示不出来

至此爬取网页的部分已经成功,接下来要做的就是将爬取的内容进行筛选我们想要的内容

2)在讲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来判断用户输入的内容是否在标题中存在,若存在则输出”页码”、“时间”、“标题”、“作者”,并创建一个在桌面的文本写入漏洞列表(可更改路径),若没有则输出”未找到目标”。颜色代码挺好用的~  “\033[xxm(text)\033[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-WA9rTWQ    提取码: fvqp

本文来自网络,不代表F12sec立场,转载请注明出处:http://www.0dayhack.net/index.php/1979/
头像

作者: Anyyy

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

CAPTCHAis initialing...

评论列表(2)

联系我们

联系我们

QQ群:884338047

在线咨询: QQ交谈

邮箱: 2676666667@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部