精华内容
下载资源
问答
  • 本篇将会涉及:requests模块第一个脚本设置http请求头发送POST请求requests模块接触过Python爬虫的同学,对requests模块都不会陌生。这是一个高效便捷快速友好的HTTP请求库。与爬虫类似,进行Web渗透测试也需要对Web...

    本篇将会涉及:

    requests模块

    第一个脚本

    设置http请求头

    发送POST请求

    requests模块

    接触过Python爬虫的同学,对requests模块都不会陌生。这是一个高效便捷快速友好的HTTP请求库。

    与爬虫类似,进行Web渗透测试也需要对Web应用进行请求,与网站进行交互或者是遍历网站路径亦或是测试SQL注入漏洞,还是上传带有后门的表单文件。

    requests模块支持多种HTTP请求方式,基本上涵盖了HTTP协议所定义的请求方法:

    同时能够方便地查看请求和响应的信息。

    查看状态码:使用status_code属性;

    查看响应头:使用header属性;

    查看响应内容:使用content或text属性;

    下面我们通过写一个脚本,实际的使用一下requests这个库。

    第一个脚本

    第一个例子,我们使用requests库对上一篇介绍的HTTP请求和响应测试网站www.httpbin.org的/ip路径进行一个GET请求。

    运行脚本,结果返回和浏览器上打开的结果一致的信息:

    我们再来访问一下httpbin.org的跳转重定向链接:

    这个链接会跳转到example.com的网站上。在这里,我们使用params参数来传递重定向的值:

    返回了200状态码,表示请求成功:

    我们可以再通过requests来看看头域的信息:

    结果返回了:

    设置请求头域

    默认情况下,requests会使用自己的请求头,但是我们可以修改它。

    比如:

    自定义一个头域;

    篡改我们的浏览器标识;

    更改host头;

    篡改任何的头域;

    httpbin.org提供了一个测试http头域的工具:/headers:

    其会返回客户端的请求头。我们直接使用requests.get请求一下,看看返回的结果:

    可以看到,在默认请求下,requests的浏览器标识为“python-requests/2.18.2”,接受所有类型的响应:

    下面,我们使用requests请求方法中的headers属性,将我们的请求头域修改一下,浏览器标识改为Iphone X:

    结果我们的浏览器标识成功改成了Iphone X :

    提交POST表单

    在Web渗透测试之中,表单是测试的一个重点。有表单的地方就有输入,有输入的地方就会与服务器进行交互,像经典的SQL注入多数情况下就是通过在输入框中构造SQL语句来达到入侵的效果。

    在requests中,我们通过post()方法来进行POST请求,使用它的data属性来传输表单数据,同样是利用httpbin.org提供的post测试路径:

    看看返回的结果:

    表单数据中,是我们传输的name数据。

    本篇内容就此结束,有错误的地方还望指正,有疑问的地方欢迎留言讨论。

    感谢阅读!

    分享到:

    展开全文
  • python,爬虫 渗透

    2019-06-12 10:40:02
    https://blog.csdn.net/nzjdsds/article/details/82947761 https://blog.csdn.net/qq_41841569/article/details/81870271 https://blog.csdn.net/nzjdsds/article/details/77506254
    展开全文
  • 前言python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天我们就来谈谈python渗透测试中的应用,让我们自己动手打造自己的渗透工具集。一、信息搜集--py端口扫描小脚本端口扫描是渗透测试中常用...

    前言

    python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天我们就来谈谈python在渗透测试中的应用,让我们自己动手打造自己的渗透工具集。

    一、信息搜集--py端口扫描小脚本

    端口扫描是渗透测试中常用的技术手段,发现敏感端口,尝试弱口令或者默认口令爆破也是常用的手段,之前自学python时候百度着写了个小脚本。

    端口扫描小脚本:

    对于端口扫描技术,其实分很多种,通常是利用tcp协议的三次握手过程

    讲解一下我们的py端口扫描小脚本:

    核心代码:

    这段代码是定义了要扫描的端口,并且用for ..in .. 来进行遍历

    关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货

    每天晚上20:00都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实

    二、实用爆破小脚本--压缩文件密码爆破&&ftp爆破

    对于压缩文件,py有自己的处理模块zipfile,关于zipfile的实例用法,在violent python里有实例脚本,模仿书里写了个小脚本

    脚本很简单,核心就一个地方:

    python在爆破方面也很有优势,比如ftp,py也有ftplib模块来处理,一次ftp连接过程如下:

    三、目录探测--py低配版御剑

    昨天写了个小脚本,用来探测目录,实现和御剑一样的效果,脚本是写好了,开了多线程,但是还算很慢。。之后我会再次修改:

    关于加载多个字典,代码实现如下:

    当我们遇到php站点时,完全可以把御剑的字典拿过来,只加载php.txt dir.txt,这点和御剑是一样的:

    四、爬虫爬取整站连接

    改了一下,本来是用来爬取百度百科python1000条词条的(现在还是能爬的,要是之后目标更新了,就得制订新的爬虫策略了,大的框架不需要变),改成了爬取网站整站连接,扩展性还是很好的。

    爬虫的基本构成:

    4.解析器:BeautifulSoup或者正则或者采用binghe牛的pyquery来解析下载器下载来的页面数据

    5.输出器:主要功能输出想得到的数据

    调度器:

    spider_main.py

    url管理器:

    url_manager.py:

    url_manager模块里的类,及类的方法

    下载器:

    html_downloader.py

    requests:

    html_outputer.py

    这个看情况,可要可不要,反正已经能打印出来了:

    效果:

    这款爬虫可扩展性挺好,之后大家可以扩展爬取自己想要的内容

    当然要是只需要爬取某个页面的某些内容,完全不必要这么麻烦,一个小脚本就好了:

    比如我要爬取某二级域名接口中的二级域名结果:

    小脚本用正则就好了,写的快

    五、python在exp中的应用

    在本地搭了个环境,然后用python也写了下,还是挺好写的:

    展开全文
  • 小伙伴们看到标题可能会想,我能直接自己登陆把登陆后的cookie复制下来加到自定义的请求头里面不香嘛,为...一、JS渗透爬虫准备工作 在介绍代码之前,我先说一下代码中用到的库。 1.rsa(是一个非对称加密算法,需要pi

    小伙伴们看到标题可能会想,我能直接自己登陆把登陆后的cookie复制下来加到自定义的请求头里面不香嘛,为什么非要用python模拟登录的过程?如果我们是长期爬取数据,比如每天早上中午和晚上定时爬取新浪,那么,这个方法对我们来讲可能就非常的不方便了,因为我们一直都在重复的做登录复制的劳动,这对我们程序员甚至是普通人来讲都是很不友好的。

    所以,今天我给大家带来用python模拟登录新浪微博的过程。

    image

    一、JS渗透爬虫准备工作

    在介绍代码之前,我先说一下代码中用到的库。

    1.rsa(是一个非对称加密算法,需要pip安装一下)

    2.Requests(可以说,只要有爬虫的地方大多数都有它)

    3.base64(加密算法)python内置的

    4.time(时间模块)

    5.json(处理字符串的)

    6.binascii(这个是处理16进制数的,可以将前面多余的显示十六进制信息的符号去掉)

    1.工具介绍

    然后我们用到的抓包工具,Fiddler 4。这款工具,在爬虫这里来讲,尤其是涉及到了高级和js渗透,没有这个工具肯定是不行的。由于在这里我们还涉及到js渗透,所以推荐使用的浏览器是谷歌浏览器,我们的例子也是用谷歌浏览器实现的。现在,我必须先介绍一下js渗透的基本思想和方法。Js渗透,故名思意,就是利用js代码,从而分析出网页中的参数到底是怎么来的,从而模拟关键参数构造的过程,从而可以自己构造数据包,达到我们想要达到的目的。那到底如何渗透呢?我们先来了解一下我们的工具!

    2.谷歌浏览器

    image

    首先,我们看第一个两个箭头所指的Elements,在元素这一栏里面,右边有一个事件,也就是EventListeners,点击这个栏目,我们可以看到click这个字段,我们点击它,会看到出现了几个栏目,这个就是我们触发调试的关键,在click中,只要我们的鼠标点击一次,就相当于出发了一个焦点,每触发一个焦点,就会触发调试,当然,这个是需要我们打断点的,至于怎么打断点,我在下面会讲到。在触发的焦点中,我们需要的是登录这个按钮的这个触发点,click,因为这个很关键,如图:

    image

    要唤出我们需要的点击事件,我们需要用如下图所示的小鼠标,点击它,然后再点击上面的登录按钮,这样,在click中就能够跳出我们想要的触发事件,如图:image

    Console这个模块。这个模块非常的有意思,它是我们看js内部代码的关键所在,等等我们就会演示。Source:这个模块就是用来看js代码的,这里我们点击 source,然后看一下右边的栏目:image

    箭头从右至左分别是,调试的暂停,下一步,进入到改行代码的函数中,以及跳出函数继续执行。这个是我们调试的另一个关键的模块。我们可以发现,上面图片中的js代码根本不是人看的,当然这个不要紧,我们可以注意到,图片左下角有一个{},点击它,就可以让代码变成人可读的样子。

    Network:这个是chrome自带的抓包模块,在这里面,我们可以抓到每个请求的http包。使用方法就是如图:image

    左边的箭头是停止抓包,右边的箭头是清除抓到的包。点击图中的Initiator,可以进入到该包的js模块中,这个也是我们等等会重点用到的。

    3.Fiddler

    我最后再介绍一下fiddler这个软件,这个软件在网上可以下载,是免费的。它是一款在osi七层模型中抓取应用层上面http协议的软件,它在爬虫中的地位也是很高的,也很重要。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wLHFtv1-1606892064160)(https://upload-images.jianshu.io/upload_images/25205170-7376b01cb08a23fc?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

    我们可以看到,上面就是协议包,而哪个capturing就是正在抓取的意思,我们可以再抓取到我们想要的数据包的时候,再点击它,将抓包停止。

    image

    这里就是我们需要看参数的地方,非常的关键,因为我们的参数就是从这里观察到的。如果显示不了文本就点击黄色的那一栏,这样就可以转码了。当然我们还需要善于利用查找关键字来定位我们的参数在哪里。***大家一定要注意,全局搜索的用处是很大的,平常大家的搜索技能在爬虫中可以更加充分的发挥作用。***二、微博实战1.Fiddler抓包应用
    现在让我们看看到底怎么样实现微博登录的吧。 第一步,我们打开新浪的网站,网站的url是:https://weibo.com/然后,我们打开fillder这个抓包工具,记住,我们先输入账号和正确的密码,点击登录,然后等到登陆后的页面出来后,我们停止抓包,我们可以看到如下的数据包:当然,一开始使用fiddler可能会出现读者抓不到包的情况,这个也有解决办法:我们点击左上角的Tools,然后点击里面的Options选项,在跳出来的框中,点击HTTPS,然后点击Actions,点击跳出来的第一个选项,然后按yes,之后一直同意就好了,接下来我们就能抓包了。image

    我们发现,在数据包中有一个带login的url,这个我断定应该是一个登录请求,那是不是说,只要构造这个包里面的参数,就可以进行模拟登录了呢?

    现在,我们来看一下这个包里面具体的数据:image

    在这个数据包中,我们能看到有很多的参数,但是参数我们都说分成固定的参数和动态的参数,固定的参数,我们只需要复制黏贴就行,但是,动态参数是需要我们模拟的,所以,我们需要在这些参数中,找到动态的参数。找法就是多发送几次请求用错误的密码,正确的密码去试,然后对比这几次抓到的同一个包。这里我们把这个步骤留给读者自己验证,现在我来说结论,我发现,nonce,sp,rsakv,servertime这几个参数是会变的,其他参数是固定的。那么,接下来,我们就是要模拟这些参数,搞清楚它们是怎么来的。首先,我们利用查找功能,查找nonce的出处,如图:image

    这个软件会将关键字出现的地方标黄。

    我们点击prelogin这个包,发现在它的数据体里面出现了nonce:image

    以及rsakv也出现在这个里面。从这里,我们可以得出结论,是不是我们只要构造这里面的参数,就可以拿到这两个动态参数呢?经过实践,这个结论确实是正确的。2.代码构造参数,抓取第一部分的关键信息
    接下来就是代码的实现:

    import requests
    

    既然我们已经知道,它是在prelogin这个包中,那么接下来,我们必须开始js渗透。
    首先我们要刷新一下新浪的界面,然后把network里面的数据包全部清除,点击账号的输入框,输入自己的账号,在用鼠标点击密码框后,我们发现,在network上面就跳出来了我们想要的包,prelogin。image

    下一步,我们要点击initiator中,prelogin对应的哪个连接,进入js代码中,然后再按左下角的大括号整理代码格式。当进入到代码后,我们按下ctrl+f在跳出的搜索栏中打入su然后回车,我们就很快发现了su的加密模式:image

    就是base64加密。所以我们引入了base64这个模块,构造su参数,具体的就在代码中体现了。接下来,我们就是要请求这个prelogin页面,从而获取里面的文本,因为我们需要里面的除sp以外的动态参数。请求后我们打印r.text,获得到的数据是这样的:

    image

    我们可以发现,上面的参数有很多是我们确实需要的,这也就意味着我么的渗透第一步成功了。
    三、关键参数sp我们可以发现,确实都在里面了。现在,我们只需要用正则,匹配大括号及其里面的东西,然后用json重载一下(loads),文本就能和字典一样操作了。接下来,就是要破解sp这个参数到底是怎么来的了。 下面,就到了之前介绍的环节了。 首先,我们要到Elements里面的Event Listeners中,点击click,然后再点击进入js页面,如图:image

    点击这个链接,这样就能进入js代码中。然后,再js中按下Ctrl+f输入rsa,为什么不输入sp呢?因为输入sp有很多不是我们要的东西也会涉及进来,会导致搜索的繁琐性变得更大,然而,rsa是一个非对称加密算法,在之前的prelogin中我们可以找到pubkey这个字段,从中我们可以断定,sp和rsa加密算法紧密相连,从而搜索rsa来找到sp的具体实现位置。进入js后,我们发现再2825行有一个蓝色的箭头,如果没有,就点击2825这个数字,就有了,这个就是我们说的断点。断点设定完之后,我们需要把鼠标移动到登录框,在框的范围内点击一下,这个叫做触发一次事件,这样就能进入断点调试模式。我们之前已经在搜索栏中打入了rsa所以,在没有匹配到rsa之前,我们必须不停的按下一步,途中会跳过很多js文件,这个是正常的,我们只需要关注我们需要的js代码即可。 当我们匹配到rsa后,那么就说明,sp肯定也在这里面,此时我们再把rsa换成sp,我们就很快发现了sp的所在位置,如图:image

    我们发现,b赋给了sp,而b又是啥呢,我们发现b是f的返回值,而且,由于我们是rsa加密,所以是if语句下面执行的代码。再观察,我们发现,首先是f设置了公钥,然后呢,再利用公钥给b加了密,里面还添加了其他的参数,而这些参数,刚好是我们能获取到的。公钥的设置,以及加密的过程涉及到rsa算法,这个读者可以看看这个url下面的文章,从而更好地理解下面的操作。https://blog.csdn.net/gao131360144/article/details/79966094由于setPublic中,第一个参数是固定的,而第二个中有一个10001,读者到这里可不能就这么认为就是十进制10001这个数,如果这样,那就太不严谨了,因为,这个数可能是十六进制,也可能是二进制,甚至是17进制;只要开发者胆子大,啥进制都能设置,这也是此渗透的难点所在。那我们如何去判断,这个参数到底是什么进制呢?这个时候就要用到**控制台(console)**了。刚刚我们介绍过控制台。在js中,这个控制台可以把自己的代码给打出来,小伙伴们到这里不要惊奇,这个js这么随意的嘛?确实,js随意起来连自己都卖。

    1.断点调试

    首先,我们要在我们想看的f这个对象这里打上断点,让代码执行到这,如下图所示:image

    然后,我们点击调试按钮中的像播放键▶ 这样的一个符号,停止调试,接下来再点击登录按钮,触发事件,启动调试,这样,我们就能够停在现在我们设置的断电这里,要注意的是,密码和账号都要输入,密码可以不正确,因为这个只是调试而已。如图:image

    接下来我们点下一步,直到过了f这一行。接下来,我们点击控制台,输入f.setPublic()按回车后我们发现,源代码出来了,如图:image

    我们可以发现,这个10001对应的是16进制,而不是十进制。接下来,最后一个问题就是b到底是啥?很简单,在控制台输入b回车,大家就会惊奇的发现,是自己的密码。在知道了sp的来龙去脉之后,我们开始构造sp的加密函数了:

        def encrypt_password(password,pubkey_N,servertime,nonce):
    

    其中,binascii就是用来将数据从十进制转换成十六进制的,最后的decode就是将数据从二进制编码变成字符串的形式然后传送给服务器。

    2.伪造请求

    函数构造完后,我们就可以构造最终的登录请求了:

    paramss = {
    

    3.url的进一步分析
    在提交完数据后,我们其实并没有登录成功,原因就在于参数提交后的在真正页面出来之前的请求,我们从抓包的软件中可以发现,这些请求,是用来设置cookie的,如图:image

    所以,我们再发送登录请求后,还需要继续模拟四次请求,才能让服务器帮我们设置coookie,完成登录。这些网址怎么来?总不可能一个个手打上去吧,当然,我们写代码也不是为了手打网址,这些网址就隐藏在/crossdomain2.php?这个包中。我们只需要将这四个网址中的任意一个网址的一部分复制查询一下,就能够很快的定位这四个网址的来源了,如图:image

    那我们怎么获取这个页面呢?我们继续网上看,发现再我们刚刚请求的login页面中的文本里面,有这个页面的地址,如图:image

    4.再次伪造请求,设置cookie于是,我们的思路就来了,首先,构造参数发送请求,然后呢,再请求这个login页面,用正则将里面的url匹配出来。然后再请求一次,把里面的四个网址匹配下来,最后写个循环,请求这四个网址。

    5.查询自己的用户名,检查是否登录成功

    最后我们请求https://weibo.com/u/7382963711/home?wvr=5&lf=reg 这个网址,打印一下它的html文本,看看自己的用户名在不在html文本中,如果在的话,就说明我们的模拟登录成功了。现在,附上剩下的代码:

    url = 'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)'
    

    到此,我们的模拟登录就完成了。感谢大家的观看和学习。

    展开全文
  • 小伙伴们看到标题可能会想,我能直接自己登陆把登陆后的cookie复制下来加到自定义的请求头里面不香嘛,为...一、JS渗透爬虫准备工作 在介绍代码之前,我先说一下代码中用到的库。 1.rsa(是一个非对称加密算法,需要pi
  • http://www.bilibili.com/video/av75603117(python爬虫) https://regexr-cn.com/ (正则表达式测试网站) https://gallery.pyecharts.org/#/(pyecharts库网址,可视化
  • 编辑 | Jane出品 | Python大本营(公众号id:pythonnews)根据 2018 年 Python 开发者大调查,Python 3 的渗透率已经快速增长至 84%,越来越多的开发者使用 Python 进行数据分析。同时在 Web 开发、运维、系统维护等...
  • 渗透测试或者爬虫运行过程中,目标服务器会记录下我们的IP,甚至会封锁我们的IP,所以我们需要隐藏自己的IP。 这时就需要用到代理服务器,我们将自己的请求交给代理服务器,由代理服务器将我们的请求交给目标...
  • 本篇概要requests模块第一个脚本设置http请求头发送POST请求requests模块接触过Python爬虫的同学,对requests模块都不会陌生。这是一个高效便捷快速友好的HTTP请求库。与爬虫类似,进行Web渗透测试也需要对Web应用...
  • 写在前面:之前在学校的时候自学过C,java,PHP...一直以来对网络安全很感兴趣,最近在京东上花了62元,买了一本《Python绝技》这本书,接下来业余时间,我会按照书上的内容来走一遍,学习一下渗透知识。    ...
  • 其实多线程扫描器是python 爬虫中的一种,可以自动检测远程服务器、Web站点等安全漏洞、弱口令、扫描IP、文件、端口、目录的Python程序,它能够快速的准确的发现扫描目标所存在的漏洞,为渗透入侵安全检测等打下了...
  • Python 编写EXP 主要是针对Web 应用中的漏洞,与Web应用进行交互,大多是基于HTTP协议的,所以需要引入一些关于HTTP的模块,例如:第三方模块 requests模块 安装:pip install requests requests库的使用 http方法 ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 101
精华内容 40
关键字:

python爬虫渗透

python 订阅
爬虫 订阅