zoukankan      html  css  js  c++  java
  • 实验吧编程题python

    网址:http://ctf5.shiyanbar.com/jia

    之后第一步就是刷新一下网页,发现给的公式会变,(废话,要不直接算数不就行了。。。)但是格式不会变。

    所以那就暴力一点好了,我们看一下这个网页的html代码。

    所以要获取这个页面中公式的内容,然后计算这个公式的值,之后用post的方法,提交这个数据,得到返回页面,就能得到key了。

    公式很好过的,用beautifulsoup无脑拿到,soup.form.div.string就可以。

    但是之后就陷入了“如何求字符串公式”的值的思考中。。。于是最后决定写个非常不漂亮的代码/。。。傻乎乎的,不过还是做出来了。

    import requests
    from bs4 import BeautifulSoup
    
    url = 'http://ctf5.shiyanbar.com/jia/'
    s = requests.session();
    html = s.get(url).text;
    soup = BeautifulSoup(html,"html.parser")
    s1 = list(soup.form.div.string.split(' '))[0].split('(')[1]
    s2 = list(soup.form.div.string.split(' '))[2].split(')')[0]
    sum1 = int(s1)+int(s2)
    
    
    s3 = list(soup.form.div.string.split(' '))[4].split('(')[1]
    s4 = list(soup.form.div.string.split(' '))[6].split(')')[0]
    sum2 = int(s3)-int(s4)
    
    
    s5 = list(soup.form.div.string.split(' '))[8].split('(')[1]
    s6 = list(soup.form.div.string.split(' '))[10]
    s7 = list(soup.form.div.string.split(' '))[12].split(')')[0]
    sum3= int(s5)+int(s6)-int(s7)
    
    
    s8 = int(list(soup.form.div.string.split(' '))[14])
    
    
    submit = sum1 * sum2 - sum3*s8
    print(submit)
    post_Content = {'pass_key': submit, 'submit': '%e6%8f%90%e4%ba%a4%e6%9f%a5%e8%af%a2%e5%86%85%e5%ae%b9'}
    
    result = s.post(url,data=post_Content).text
    print(result)

    是的,我用漂亮汤获取元素,然后转化为list,再进行分段的运算(投机取巧,因为公式的格式不会变,只有数字变)最后构造post的内容,pass_key是文本框的,submit后面的是“提交查询内容”的url编码

    用session的方式post这两个进去,得到返回页面result的text :

    可以看到 key 就在里面了。

    搞定(虽然这个方式相当蠢。。。有空得想想怎么解决类似的问题。。。——)

  • 相关阅读:
    先装Net Framework 后 装 IIS的处理办法
    post请求和get请求的区别
    再说重写IHttpHandler,实现前后端分离
    自定义VS的ItemTemplates 实现任意文件结构
    自动生成 Lambda查询和排序,从些查询列表so easy
    sql表分区
    关于Window Server2008 服务器上无法播放音频文件的解决方案
    Visifire Chart相关属性详解
    SQL Server数据库定时自动备份
    在SQL中 给字符串补0方法
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/9720579.html
Copyright © 2011-2022 走看看