• python 的eval函数


    python中的eval()函数是用来计算所有数学的代数计算式,这样可以很快得到复杂代数式的结果。

    例如:383660347*375705824-1796136991-1726898699*1899420019*1700897586*642532444-2073968155+592065376+1145982995+178738053=

    >>>eval('383660347*375705824-1796136991-1726898699*1899420019*1700897586*642532444-2073968155+592065376+1145982995+178738053')
    >>>-3584768377397114585976975169312809498

    这里记录一个bugkuctf的web题:秋名山老司机

     进去发现是计算一个很复杂的代数式,且要求2秒,那么肯定要用脚本来跑

     且刷新了几下发现要用post来提交答案,答案的值赋值给value。

    那么直接上代码,先正则匹配出里面的代数式,然后再用eval进行求和,将结果赋值给value,然后再进行post发包,data就是value和它的值,然后输出响应包的数据。

    import re
    import requests
    
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
    url='http://123.206.87.240:8002/qiumingshan/'
    s=requests.session()
    response=s.get(url,headers=headers)
    res_conte=re.search(r'(d+[+-*])+d+',response.content.decode())
    num=eval(res_conte.group())
    datas={'value': num}
    response_post=s.post(url,headers=headers,data=datas)
    print(response_post.content.decode())

     flag就出来了!

    其实很多ctf赛事都要考察python的计算能力,也就要用到eval()等这些计算函数。

  • 相关阅读:
    Android(一)
    git
    UBuntu18.04 配置环境
    TensorRT Development document (Python)
    继续
    tensorRT C++ API
    tensorRT 与yolov3_tiny
    浅谈PHP进程管理
    nginx 平滑重启的实现方法
    fast-cgi & php-fpm 等的理解 (讨论试理解)
  • 原文地址:https://www.cnblogs.com/-chenxs/p/11654532.html
Copyright © 2020-2023  润新知