XCTF 2020 第二场 WriteUp - CNSS
Web
BABYPHP
在github上搜索code相关源码
1 |
|
根据
1 | function getCss($host,$html){ |
进行文件包含,在自己的vps中起服务,在test.php中放以下内容
1 | <link href="file:///var/www/html/http:///../.css/../flag.php"> |
访问vps下的test.php即可
1 | url/?url=ip/test.php |
CLOUDSTORAGE
裸的dns rebinging 攻击
1 | POST /admin HTTP/1.1 |
g.ccdragon.cc应在发包的时候修改为自己vps的ip
b.php内容
1 |
|
然后就可以获得flag
Reverse
MIPS
MIPS 三个迷宫 wasd
the flag is flag{md5(your input)}
1 | sssssssddddddds |
Crypto
COMBINELFSR
观察题目
求出 即可
利用z3列了个方程就出来了
然后AES解密
python 脚本如下
1 | from z3 import * |
解得
[R1 = 13706, R2 = 90307]
AES解密如下
1 | from hashlib import sha512 |
RRSSAA
Level 1
直接分解n,还需要求c1
1 | 7296 833146 437859 657873 621309 783663 953888 975990 236533 231501 856312 811032 923469 834028 894995 888763 882827 280881 148914 714991 084488 173289 859941 577252 999932 599209 531912 854472 326211 936264 815965 582591 809770 319779 712527 572174 152560 819828 597241 583278 731544 411246 154674 514626 001858 732363 262751 244419 415544 407653 873858 309154 132440 262888 841600 498885 105451 586030 156787 (352 digits) = 1532 475862 559167 888089 449717 098486 868564 837338 169781 366942 603735 389113 940567 854981 202963 (88 digits) × 32181 993113 742525 649878 444059 068224 239861 584101 565408 705794 678443 171392 751924 954605 262593 (89 digits) × 147 954382 967567 334495 825602 333272 303008 663091 186081 473946 510299 621489 456700 250380 306480 186540 635099 296785 300254 866723 827737 503644 593230 916778 129860 327016 484257 850428 720933 989793 (177 digits) |
Level 2
显然可知os和tu
可以尝试爆破t-o和u-s吗?
爆破思路:用exgcd得可能的o和s,验证是否相乘后与题目给的一致?
level2 yafu可以分解出一个st 然后和给的os求gcd
1 | s = 1769484680827049927550244997585804521449639580340484582882353723613708679540983088786408529 |
Level 3
怎么分解n?c-m^7%n之后,是p的倍数。然后和n再gcd即可
1 | C:\\Users\\13672>python |
Misc
S34HUNKA
拿到是个xlsx,转成csv好像并没有什么文字
总之先搜个图看看
http://www2.odn.ne.jp/~cbl97790/shinsakutenjishitu2.htm
在网站上找到了s34hunka.jpg
然后看看怎么把xlsx里的图片导出
https://stackoverflow.com/questions/55122922/get-the-color-of-a-cell-from-xlsx-with-python
找了个代码糊一下
219x220
1 | import openpyxl |
RealWorld
MPI
是个x86_64的ELF
https://www.jianshu.com/p/2fd31665e816
MPI开了13个线程,互相发送信息
https://docs.microsoft.com/zh-cn/message-passing-interface/mpi-dist-graph-create-function
1 | 1:(sec>>24)^97 |
所以是找一个长度为12的环并且遍历每个点
1 | 4 12 11 5 9 |
根据输入的secret生成0~12的排列
貌似不是逆康托展开?
复制源码写个二分
1 |
|
Input the secret: 5804705925
输入后下断点直接跳到成功分支打印flag