测试第十天

Hello world,hello blog!

Posted by 吴柚 on February 28, 2019

#尝试解决的问题为Calculator

(1) 预备知识以及工具的使用

①python3.5以及编译器

②requests库的使用

> 发送请求

首先要导入requests模块
    >>import requessts
然后通过代码获取某网页。如calculator的网页
    >>url = 'http://web1.blue-whale.me:23331/calculator/'

> 传递url参数

   >> 手工构建的URL,例如,xxx.org/get?key=val,Requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。
   
   >>> 如 r = requests.get(url, params={'answer': answers}, cookies=c)

> cookies的返回与使用

» 如果某个响应中包含一些 cookie,你可以快速访问它们:
      url = 'http://example.com/some/cookie/setting/url'
      
      r = requests.get(url)
      
      r.cookies['example_cookie_name']
» 要想发送你的cookies到服务器,可以使用 cookies 参数:
      url = 'http://httpbin.org/cookies'
      
      cookies = dict(cookies_are='working')
      
      r = requests.get(url, cookies=cookies)
      
      r.text

③正则表达式re的使用

正则表达式(Regular Expression)是字符串处理的常用工具,通常被用来检索、替换那些符合某个模式(Pattern)的文本。

  > 使用正则表达式从字符串中提取出子字符串
  
  >> pattern = re.compile(r'<span id="exp">(.+) = </span>')

④使用eval()函数计算由正则表达式提取出的字符串

   evals = re.findall(pattern, html)[0]
   
   answers = eval(evals)

(2) 代码

import re

import requests

def main():  #定义函数
    url = 'http://web1.blue-whale.me:23331/calculator/'
    request = requests.get(url)
    c = request.cookies
    print(c)
    html = request.text
    pattern = re.compile(r'<span id="exp">(.+) = </span>')
    evals = re.findall(pattern, html)[0]
    answers = eval(evals)
    print(answers)
    r = requests.get(url, params={'answer': answers}, cookies=c)
    print(r.text)
if __name__ == '__main__':
main()

(3) 输出结果

<RequestsCookieJar[<Cookie PHPSESSID=d2edaf511e14b97fd9af46e5bdb26db4 for web1.blue-whale.me/>]>
12519589397
<!DOCTYPE html>
<html>
<head>
    <title>Calculator</title>
    <style type="text/css">
    	.line_input{
		    border-width: 1px;
		    border-bottom: solid;
		    border-top: none;
		    border-left: none;
		    border-right: none;
		    border-width: 1px;
		    text-align: center;
		    outline: none;
		    margin: 0 1em;
	    }
	</style>
</head>
<body>
<center>
<h1>Yet Another Calculator</h1>
flag{yes_you_are_calculat0r}<br />Time elapsed: 0.49016308784485 s<br />
</center>
</body>
</html>

(4) 学习认知

在学习python的过程中,快速略过了不少内容,基础很不扎实,后期需要继续学习;

解此题的过程中,参考了网络安全实验室同类型题目的writeup,因此正则表达式re的用法尚不熟练;

requests库的内容还有很多不会,需要继续学习;