ctf题目writeup
Posted lixiaoyao123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctf题目writeup相关的知识,希望对你有一定的参考价值。
2019.2.11
南京邮电的ctf平台:
地址http://ctf.nuptzj.cn/challenges#
他们好像搭新的平台了。。。我注册弄了好半天。。。
1.
签到题,打开网址:
查看一下页面源代码:
2.
这道题很熟悉,就是找 md5后开头为0e的 然后传参就行了:
比如 ?a=s878926199a
nctf{md5_collision_is_easy}
3.
这里查看页面源代码:
这里最大长度是10 肯定不够 改成12什么的,足够我们输入 zhimakaimen
nctf{follow_me_to_exploit}
4.
打开后:
查看页面源代码,没发现什么有用的。试了试把index.html改成Index.php也不行。
就把图片保存到本地,notepad++打开:
最后一行:
nctf{photo_can_also_hid3_msg}
5.
这道题打开后是这样的:
打开后查看页面源代码(总共需要三次) 分别是 S0.html S0.htm 404.htm
最后进入404.html:
这个后退没什么用。直接查看源代码:
这段注释 竖着看 就是flag
nctf{this_is_a_fl4g}
6.
打开后这样:
这里需要用unicode看:
去百度一下aaencode
http://utf-8.jp/public/aaencode.html
原来是一种颜文字的加密方式,直接用这个加解密就行了:
nctf{javascript_aaencode}
7.
这里点开后是这样:
其实不知道原理,自己是误打误撞地,因为我在第一页就查看了源代码
然后从这里点链接:
可能正常的方式是抓包吧。这里一路查看源代码没想到就通了。。
8.
这道题以前做过,抓包 吧referer改成 http://www.google.com 就行
nctf{http_referer}
9.
这道题涉及到了 php中一种加密方式,gzinflate(base64)加密,破解的方法就是把eval改成echo即可:
nctf{gzip_base64_hhhhhh}
10.
这道题直接抓包(不能像上一道题那样直接查看源代码了)
看样子是302跳转。。。
nctf{this_is_302_redirect}
11.
打开页面是空白的,查看源代码也什么都没有,尝试抓包:
然后发现 cookie是 login=0 结合提示,0==not,那么1就是真,改成login=1 :
nctf{cookie_is_different_from_session}
12.
打开后有个提示:
直接进去:
所以就是 我们要进入 sql.php这个网址 通过给id赋值,得到flag。
而再明显不过,1024就是我们想要读取的内容。但是这里被过滤了,不过他用的是 intval 这里用1024.1这样的小数 经过intval变换也会变成1024
nctf{query_in_mysql}
13.
看到这提示就想到了啥,利用/x00截断:
这里就构造 nctf= 的形式。
这里需要是数字,而且还得和#biubiubiu符合 strpos函数
所以就得需要利用到 /x00
有两种方式
可以构造 ?nctf[]=1
(利用数组,php中大多函数都无法处理数组,很多题都可以这么做)
或者利用截断,使两个函数都可以利用到:
?nctf=1%00#biubiubiu
nctf{use_00_to_jieduan}
14.
这里就是利用数组,?a[]=1&b[]=2
nctf{php_is_so_cool}
15.
这道题用到了变量覆盖漏洞。
说白了就是两个变量相等,导致变量被覆盖掉。
要注意这里是post方式 需要用到hackbar。
nctf{bian_liang_fu_gai!}
16.
这里大概意思就是 需要等于 54975581388 但是不能和他一样 ,用数组也无法绕过。
所以采用十六进制:
?key=0xccccccccc
nctf{follow_your_dream}
17.
jsfuck直接搞:
进这个网页瞅瞅:
tip在脑袋里,就是header呗。
tip是 history of bash 直接百度下这是啥:
所以直接访问/.bash_history 试试。
那就接着访问/flagbak.zip 发现直接下载这个压缩包了。解压后得到flag
nctf{bash_history_means_what}
18.
R1pDVE1NWlhHUTNETU4yQ0dZWkRNTUpYR00zREtNWldHTTJES1JSV0dJM0RDTlpUR1kyVEdNWlRHSTJVTU5SUkdaQ1RNTkJWSVkzREVOUlJHNFpUTU5KVEdFWlRNTjJF
先base64 再base32 最后base16
nctf{base64_base32_and_base16}
19.
其实不用python也行。。。直接base64在线一直解密就好了:
nctf{please_use_python_to_decode_base64}
20.
密文:iEJqak3pjIaZ0NzLiITLwWTqzqGAtW2oyOTq1A3pzqas
加密方式:1. 翻转明文
2. 将明文的每个字符的ascii码加1
3. base64编码
4. 翻转
5. rot13编码
所以我们解密就是:
1. rot13编码
2. 翻转
3. base64解码
4. 将密文的每个字符的ascii减1
5. 翻转密文
代码:
<?php function decode($str){ $m = base64_decode(strrev(str_rot13($str))); $n = null; $c = null; for($i=0;$i<strlen($m);$i++){ $c = substr($m,$i,1) ; $n = ord($c)-1; $c = chr($n); $r = $r.$c; } $r = strrev($r); echo $r; } decode("iEJqak3pjIaZ0NzLiITLwWTqzqGAtW2oyOTq1A3pzqas"); ?>
解出:nctf{rot13_and_base64_and_strrev}
21.
这个就是随机的 base64 32 16
可以用脚本,也可以咱们先解密看结果因为这三种都有不同的地方。
或者写脚本
答案:nctf{random_mixed_base64_encode}
今天到这。。累了。
以上是关于ctf题目writeup的主要内容,如果未能解决你的问题,请参考以下文章