python嵩天测试一道杠_利用简易爬虫完成一道基础CTF题

利用简易爬虫完成一道基础CTF题声明:本文主要写给新手,侧重于表现使用爬虫爬取页面并提交数据的大致过程,所以没有对一些东西解释的很详细,比如表单,post,get方法,感兴趣的可以私信或评论给我。如果文中有哪些问题,也欢迎大家指正。

Written by Menglin Ma

写在前面

如果有想学习基础爬虫的同学,建议在中国大学MOOC上搜索嵩天老师的爬虫课程,讲的真的很细致,也很基础。

想入门CTF的同学,给你们推荐个基础的网站,上面的好多题对新手比较友好:http://www.shiyanbar.com 。初学者可以先从基础密码学开始,比其他的部分相对容易。

题目描述

将网址打开后是这样的,一个很复杂的表达式,需要在三秒内提交,依靠人的力量几乎是不可能的(神仙除外)。最靠谱的方法就是利用程序来计算这个表达式,然后自动提交结果。本文采用的是利用简易Python爬虫来实现表达式的自动计算与提交,来获取含有flag页面的方法。

页面分析

使用爬虫爬取页面的第一步就是分析页面。在这道题目中,需要获取需要提交表单的参数,以及所需计算表达式的位置。可以在输入窗口右键选择审查元素,查看所需信息。

在这里我们获得了所需要的信息:需要提交的值为pass_key的值,提交的方法为post方法,表达式夹在两个div标签之间,且div的name为my_expr是独一无二的,提交的动作为?action=check_pass。(关于HTML页面提交表单的一些详情可以尝试百度一下或私聊我)

爬虫编写

编写该爬虫需要一些前提条件,包括导入re库使用正则表达式,导入requests库爬取信息,还有就是需要获得目标网页的URL和需要发送的数据,这些条件要在程序中体现出来。

编写该爬虫大概需要以下几步:

1.导入必要的库

2.利用get方法抓取页面

3.利用正则表达式筛选表达式对应的字符串

4.处理字符串并利用eval方法自动计算

5.利用计算出的数值构造需要post的字典

6.利用post方法(注意带上cookies)向服务器发送数据,接收响应并打印

代码实现

import re

import requests

#发送post和get请求的url

get_url = 'http://ctf5.shiyanbar.com/jia/'

post_url = 'http://ctf5.shiyanbar.com/jia/?action=check_pass'

#利用get方法获取网页数据

r = requests.get(get_url)

#构造与匹配正则表达式

str_text = r"

.*
"

match = re.search(str_text,r.text)

#处理匹配后的结果

result = match.group().replace("

","")

result = result.replace("

","")

if 'x' in result:

result = str(eval(result.replace('x','*')))

#构造字典

data = {'pass_key':result}

#利用post请求发送data和cookie数据,获得回复

response = requests.post(post_url,data=data,cookies=r.cookies)

response.encoding = response.apparent_encoding

print(response.text[:1000])

运行并拿到key

Vscode下运行该程序,得到了KEY的值,提交即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值