1. 程式人生 > >網路安全實驗室指令碼關第二題

網路安全實驗室指令碼關第二題

題目:小明要參加一個高技能比賽,要求每個人都要能夠快速口算四則運算,2秒鐘之內就能夠得到結果,但是小明就是一個小學生沒有經過特殊的培訓,那小明能否通過快速口算測驗呢?

通關地址

由於題目給出資料很大的運算題,並且只能2秒內答出。這基本不可能,所以只能通過指令碼完成。

思路是用python程式碼訪問頁面,解析出算術題,然後解出答案,再post回去。

這是我的程式碼:

from urllib import request,parse
import requests
import re


print('網路安全實驗室--指令碼關第二題')
print('by--Kiruma')
data=request.urlopen('http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php').read()
demo='<br/>(.*)=<input type="text" name="v"/>'
info=re.findall(re.compile(r'<br/>\s+(.*)=<input type="text" name="v"/>'),bytes.decode(data))[0]
answer=eval(info)
print(info)


print(info)
print(str(data,'utf-8'))


mydata=parse.urlencode([
     ('v',answer)
    ])
print(answer)
s = requests.Session()
r=s.post('http://1.hacklist.sinaapp.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php',  data=mydata)


print('************************************************************************')
print(str(r.content,'utf-8'))

然而結果卻一直是:

網路安全實驗室--指令碼關第二題
by--Kiruma
2188*61126+530*(2188+61126)
2188*61126+530*(2188+61126)
<html>
    <head>
        <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    </head>
    <body>
       
        <form action="" method="post">
            請在2秒內口算結果並提交!<br/>
            2188*61126+530*(2188+61126)=<input type="text" name="v"/>
            <input type="submit" value="提交"/>
        </form>
    </body>
</html>


167300108
************************************************************************
<html>
    <head>
        <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    </head>
    <body>
       
        <form action="" method="post">
            請在2秒內口算結果並提交!<br/>
            3964*78634+1659*(3964+78634)=<input type="text" name="v"/>
            <input type="submit" value="提交"/>
        </form>
    </body>
</html>

發現了原因,我兩次訪問了這個網址,導致兩次的算術題目不同。所以應該在一個session裡面訪問兩次網頁。。。