1.查看源码


<head>
<title>下面的表达式的值是秋名山的车速</title>
<meta charset="UTF-8">
</head>
<p>亲请在2s内计算老司机的车速是多少</p>
<div>373719747-1878154638-1233431774-1476346255*1056350133+1218001988+1332727283*746947109*406838675*343521773+1142418537=?;</div>
<style>
div,p{text-align: center;
margin: 0 auto;
}
</style>

查看源代码可以知道这里,我们如果自己把数字复制到代码里面算,然后再用工具post,肯定不可能两秒内完成,除非手速无敌。所以我们这里需要使用脚本,获取post后的结果。
这里我直接附上脚本代码

import requests
from lxml import etree
s=requests.Session()
url='http://114.67.246.176:15457'
response = s.get(url).text
x=etree.HTML(response)
path=x.xpath('//div/text()')
z="".join(path[0])[:-3]
z=eval(z)
data={'value':z
}
flag=s.post(url,data).text
print(flag)

下面再来对原理的分析。

2.Requests库和lxml库的一些知识

(1). Requests库

1.requests.get(url)方法。
2.requests.post(url,构造的参数值)。
3.参数值构造的格式:data{‘要传参的变量名’:参数值}4.这里只列举的大概,想了解的更详细可以查看我学习时的博客:https://blog.csdn.net/baidu_41871794/article/details/83904024

这里我们需要使用Requests库中的get方法获取div标签中的内容,但是我们通过requests.get(url).text只能获取所有的源代码信息,不能单独取出div标签的内容,如果你足够耐心,也可以通过数组方式一个一个读出来,因为text是一个字符串,所以你可以耐心的一个一个数的方式,或者通过字符串匹配的方式,将div标签中的内容拿出来,但是那会非常的麻烦,有没有更简单的方法呢,这里就需要用到lxml库中的etree类。

(2).etree类

想看详细的去这个网址看看https://www.cnblogs.com/fightccc/p/10808590.html

这里直接上代码解释

import requests
from lxml import etree
r=requests.get("http://www.baidu.com")
html = etree.HTML(r.text)  # 调用HTML类进行初始化resultAll = html.xpath('//*')    #选取所有节点
#print("获取所有节点:",resultAll)
resultDivAll = html.xpath('//div')    #选取div子孙节点
#print("获取div所有节点:",resultDivAll)
resultDiv_img = html.xpath('//div/img')    #选取div下img节点
#print("获取div节点下img节点:",resultDiv_img)
resultDiv_imgSrc = html.xpath('//div/img/@src')    #获取div_img的src属性值
print("获取div节点下img的src值:",resultDiv_imgSrc)

使用这种方法就可以获取div标签的内容。
但是注意这里获得的值是一个对象数组,
如果直接输出结果,会发现是一些地址,

所以需要这样构造’//div/text()’
我的理解是在这个对象里面调用text()方法。
通过上面的了解。
我们就可以得到div标签里的内容了。
现在我们要做的就是计算我们得到的字符串的式子的结果。
首先我们需要先对得到的字符串进行进一步的处理
z="".join(path[0])[:-3]
这里还有另一种写法
z="".join(path[0][:-3])
path[0]也可以写成path,再这里是一样的,因为我们这里数组就一个元素。
这两种写法是一样的。
原因是path变量是我们通过利用etree获得的字符串数组,他保存了标签下的所有节点。
处理后我们就可以调用eval()方法来执行z的内容。
就可以得出式子结果,
最后再利用Requests.post()方法,就可以得到返回结果的网页,然后再用方法中的text变量,将页面的源码放出来,就可以看到flag。
这题可能是由于服务器问题,需要跑多几次,有些时候,返回的页面是空的,有些时候你就可以看到flag。

Bugku_Web18_秋名山车神相关推荐

  1. 人人都是秋名山车神——Unity实现简化版卡丁车漂移

    人人都是秋名山车神--Unity实现简化版卡丁车漂移 大家好. 前一阵子,Unity出了个名为Karting Microgame的教程项目,里边有一个赛车小游戏示例场景,行驶.转弯.漂移等主要功能都几 ...

  2. Bugku web19秋名山车神

    Bugku web18秋名山车神 前言 一.知识补充 1.正则表达试补充 2.re 函数介绍 二.web 19 解题过程 三 .秋名山车神 总结 文章目录 前言 一.知识补充 1.正则表达试补充 2. ...

  3. 从脚本学python(秋名山车神)

    最近做bugku的时候,做到秋名山车神那题,连python都不会(泪)很惭愧 https://zhuanlan.zhihu.com/p/141333473 脚本代码来自上面这个writeup impo ...

  4. BugkuCTF web18_秋名山车神 writeup

    web18_秋名山车神 原题链接 key:python脚本 ①题目环境里的网页长这样式的

  5. BuKu web18 秋名山车神

    BuKu web18 秋名山车神 显然这道题是编写脚本,废话不多说直接上代码: import bs4,requests from lxml import html from bs4 import Be ...

  6. bugku 秋名山车神

    get新知识:一些有关python爬虫的基本知识 解题部分 题目中都是这样的大数字进行计算,并且需要短时间内计算,所以这不得不使用脚本进行解题,脚本如下 #bugku 秋名山车神 --爬虫练习 imp ...

  7. [bugku]-秋名山车神详解

    解题 每一次刷新都不一样 post传参value 脚本1 import requests import re url = 'http://114.67.175.224:10053/' s = requ ...

  8. bugku秋名山车神

    python import requests import re url = 'http://123.206.87.240:8002/qiumingshan/' s = requests.Sessio ...

  9. 【CTF bugku 秋名山车神】关于会话脚本、session、正则表达式

    题目描述 题目链接 多刷新几遍,发现一个传参变量value,下边开始解题 解题思路 本题考验脚本能力,手动提交?哼,不存在的 题目多次刷新,出现要提交的参数:value 在这里插入图片描述 这么长的数 ...

最新文章

  1. LeetCode简单题之数组中两元素的最大乘积
  2. C语言文件最后一行重复储存,求大佬看看,我这个程序为什么保存进文件只有最后一行...
  3. Python学习笔记《Python核心编程》第4章Python对象
  4. [Step By Step]SAP HANA PAL指数回归预测分析Exponential Regression编程实例EXPREGRESSION(模型)...
  5. 工作与生活 -- 平衡是必须的
  6. python读取数据库数据、并保存为docx_Python - 爬取博客园某一目录下的随笔 - 保存为docx...
  7. python程序设计知识点汇总_Python入门知识点汇总
  8. 使用Spyder控制台(console)执行带参数脚本和带参数的debug模式
  9. 大事件归来,爷青回!
  10. idea Terminal配置cmder(增加nodejs,git配置,jdk本地环境)
  11. 必读的Python入门书籍,你都看
  12. adprw指令通讯案例_PLC编程入门,编写控制程序必掌握选型指令
  13. 第四届泰迪杯数据挖掘挑战赛B题数据预处理-数据导入(Matlab)
  14. easyui datagrid deleteRow(删除行)的BUG或者updateRow值更新了不展示问题
  15. numpy之histogram
  16. 成为认知高手,要避免这9个认知思维陷阱!
  17. (转贴) 亦卷亦舒
  18. 深入理解Java虚拟机——运行时栈帧结构(局部变量表)
  19. 2 Day DBA-管理方案对象-监控和优化数据库-查看度量和阙值
  20. logit模型应用实例_广义线性模型应用举例之beta回归及R计算

热门文章

  1. AEJoy —— 如何让你的 AE 插件 适应每通道 8,16,32 位颜色
  2. 你是人间的四月天(3)
  3. matlab调用R给散点图画95%置信椭圆(95% confidence ellipse in a scatterplot)
  4. Android OpenMobileAPI、OMA、智能卡开发总结
  5. 云服务器SNAT访问互联网
  6. ChatGPT简要解读(一) - 原理分析与性能提升篇
  7. 一键生成各种姿势的火柴人gif:在线录制真人视频即可转换 | 代码开源
  8. 医学图像分割UNet
  9. 量子力学 Schrodinger 方程的简单导出
  10. 2021-11-15----韩顺平Java入门第九天