CTF常用脚本(长期更新)

CTF常用脚本(长期更新)

1.长串字符串两两分割

def long_to_2(str_):
  for i in range(0,len(str_)+1,2):
      print(str_[i:i+2])

效果:
CTF常用脚本(长期更新)_第1张图片

字符串分割后,常转换为十六进制输出。

trick:不换行输出
  • Python2 print ‘xxx’,
  • Python3 print(‘xxx’, end=”)

2.不同进制转换

一般来说,先换算为十进制,再进行后续转换

转为十进制
  • 十六进制到十进制 int(‘0xab’, 16)
  • 二进制到十进制 int(‘0b10’, 2)
十进制转二进制
  • bin(123)
十进制转十六进制
  • hex(123)

3.按行读文件的4种方式

3.1使用for循环(最简洁)
file = open("sample.txt")

for line in file:
    pass # do something
3.2带缓存的文件读取(效率最高)
file = open("sample.txt")

while 1:
    lines = file.readlines(100000)
    if not lines:
        break
    for line in lines:
        pass # do something
3.3 fileinput模块
import fileinput

for line in fileinput.input("sample.txt"):
    pass
3.4 常规方法
file = open("sample.txt")

while 1:
    line = file.readline()
    if not line:
        break
    pass # do something

其中,后两种方法都不推荐。

沙盒绕过

参考文章 https://blog.0kami.cn/2016/09/16/old-python-sandbox-escape/

另外补充:当getattr()方法被禁后,可以使用‘getattribute’属性。

遍历目录下所有文件的内容这里写图片描述

import os
rootdir = os.getcwd()#可自定义
for parent, dirnames, filenames in os.walk(rootdir):
  for file in filenames:
    with open(parent +'\\' + file, 'r') as f:
      text = f.read() #print(text[0:5])
      if text[0:11111] == '待比较字符串'
        print(text)

你可能感兴趣的:(CTF,writeup,Python)