x2658y's Blog

杂七杂八的记事本

嗯, 熟悉的味道.

image-20211106231659231

试试万能密码

image-20211106231624603

不行, 注意看图上的地方, 提交的参数中的or被删掉了, 应该是字符串替换之类的

经过尝试or, and, from, where, select等关键字都会被删除, 但是只会删除一次, 所以可以采用双写绕过.

image-20211106232220046

后续采用双写测出注入点, 在第2,3列, 后续接着采用双写绕过字符替换.

image-20211106232338835

具体操作与[极客大挑战 2019]LoveSQL 1大体相同.

题目:

1
2
加密密文:afZ_r9VYfScOeO_UL^RWUc
猜测明文:flag{...}

看标题, 变异凯撒, 想必这题就是基于凯撒密码延伸出来的, 有了上次的经验, 我们再把这个字符的ASCII码拿来对比一下, 密文不外乎又是一些移位变换出来的

1
2
3
4
5
6
7
8
9
10
11
def show_ascii(*args):
for e in args:
ascii_list = []
for i in e:
ascii_list.append(ord(i))
print(ascii_list)

show_ascii("afZ_r9VYfScOeO_UL^RWUc", "flag")

#[97, 102, 90, 95, 114, 57, 86, 89, 102, 83, 99, 79...]
#[102, 108, 97, 103]

可以看到, 密文的前4位的ASCII码比 "flag" 这4个字符从第1位起依次大了5, 6, 7, 8, 后面的以此类推. 写出解密脚本即可拿到flag.

1
2
3
4
5
6
7
ciphertext = "afZ_r9VYfScOeO_UL^RWUc"
res = ''
for i in range(0,len(ciphertext)):
res += chr(ord(ciphertext[i])+(5+i))
print(res)

#flag{Caesar_variation}
0%