python 计算器 eval ctf_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和它的值,然后輸出響應包的數據。
importreimportrequests
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()等這些計算函數。
總結
以上是生活随笔為你收集整理的python 计算器 eval ctf_python 的eval函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (附源码)python电影院信息管理系统
- 下一篇: python卸载不了