1.签到题
题目非常简单,在审查元素中就可以发现flag
题目传送门:http://chinalover.sinaapp.com/web1/
2.md5 collision
这道题利用了php的弱比较和md5值碰撞
而源码要求a和QNKCDZO的md5值相同,但a和它不相等
QNKCDZO的md5值为:0e830400451993494058024219903391
php在用==做比较的时候会将0e开头的数字视为0
因而只需要让a的md5值为0e开头即可解出,我们赋予a:s878926199a
题目传送门:http://chinalover.sinaapp.com/web19/
源码(PHP)
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "nctf{*****************}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
3.签到2
题目传送门:http://teamxlc.sinaapp.com/web1/02298884f0724c04293b4d8c0178615e/index.php
题目要求我们输出芝麻开门的口令,审计网站代码时发现maxlength为10,而我们需要输入的值有11位
因此我们既可以使用burp截断后,赋予值,也可以在网站处将maxlength改为11
4.这题不是web
题目传送门:http://chinalover.sinaapp.com/web2/index.html
进去发现只有一张图片,好吧我们下载这张图片
然后我选择使用记事本打开,拉到最后,惊奇的发现了flag..好吧。。真的不是web
5. 层层递进
题目传送门:http://chinalover.sinaapp.com/web3/
进去之后先申代码。。找了好久发现有一个SO.html,在SO里发现了S0.html...好吧再进S0.html,依次发现了SO.htm,S0.htm,好吧这也许就叫做层层递进吧。。终于我们发现了404.html,进去之后在一堆注释里发现了flag...得亏眼睛尖啊。。
开始还手贱点了后退。。。心塞塞的。。
6.单身20年
题目链接:http://chinalover.sinaapp.com/web8/
申代码的时候发现了./search_key.php,点击进去被重定向到no_key_is_here_forever.php
那么用burp抓包->发到中间人->Go,得到flag
7.php decode
题目传送门:https://cgctf.nuptsast.com/challenges#Web
申代码,发现字符串经过了gzinflate和base64_decode的加密,这里只有一层加密,所以只需要把eval改成echo运行就可以了
8.文件包含
题目传送门:http://4.chinalover.sinaapp.com/web7/index.php
可以通过构造file=php://filter/read=convert.base64-encode/resource=index.php
LFI是能够打开并包含本地
文件的漏洞,我们使用伪协议来访问
然后base64解码便可以得到flag
9.AAencode
题目传送门:http://homura.cc/CGfiles/aaencode.txt
emmmm,可能是编码问题,撇到乱码恢复
然后打开chrome控制台,回车便可得到flag
10.单身100年也没用
题目传送门:http://chinalover.sinaapp.com/web9/
老办法,看代码时发现链接是index.php,但点击之后变成了no_key_is_here_forever.php
所以我们
11.COOKIE
题目传送门:http://chinalover.sinaapp.com/web10/index.php?id=1
还是抓个包吧。。。
发现coolie :login=0,改成1然后go,得到flag
12.MYSQL
题目传送门:http://chinalover.sinaapp.com/web11/
百度百科可以看看robots.txt,大概是搜索引擎能爬啥不能爬啥,那么我们进入看看
以题目的尿性,id=1024不会轻易出现,那么我们试试1024.1
13.x00
题目传送门:http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php
方法一:00截断?nctf=2%00%23biubiubiu
方法二:利用数组让判断成立?nctf[]=1
14.by pass again
题目传送门:http://chinalover.sinaapp.com/web17/index.php
两种方法,一:a不能等于b,但md5值相同
a=QNKCDZO b=s878926199a;
二:利用数组a[]=1 b[]=2;
15.变量覆盖
题目传送门:http://chinalover.sinaapp.com/web18/index.php
构造让thepassword_123=pass的值
16.上传绕过
题目传送门:http://teamxlc.sinaapp.com/web5/21232f297a57a5a743894a0e4a801fc3/index.html
随便先上传一个文件
我们试着上传一个.php文件
emmmm,用burp抓包
修改一下
把空格的20改为00
得到flag
17.sql注入1
题目传送门:http://chinalover.sinaapp.com/index.php
看看source
构造万能密码admin')#,得到flag
18.GBK injection
题目传送门:http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1
先试试’
宽字节注入,我们试试%df‘
报错了,看来注入点找对了,那么开始注入
先用order by语句来看看有几列
然后试试union select语句?id=-1%df%27%20union%20select%201,2%20%23
看来只有2能用,查看一下使用的数据库?id=-1%df%27%20union%20select%201,concat_ws(char(32),database())%20%23
得到数据库,那么查看表名
报错了。。忘了'会被转义成\'了。。使用16进制发现还是错的。。emmmm,检查发现where后面的database应该改成table_schema....
id=-1%df%27%20union%20select%201,group_concat(char(32),table_name,char(32))%20from%20information_schema.tables%20where%20table_schema=0x7361652d6368696e616c6f766572%20%23好啦
有了这个的话,猜解一下有没有flag这一列
依次到ctf4 ?id=1%df%27%20and%20exists(select%20flag%20from%20ctf4)%20%23
成了,激动人心的提取flag(也没啥激动的。。。构造语句进行注入得到flag?id=-1%df%27%20union%20select%201,group_concat(char(32),flag,char(32))from%20ctf4%23
19.pass check
题目传送门:http://chinalover.sinaapp.com/web21/
先看看题目提示
如果pass变量存在,那么当pass和pass1相同时输出flag,strcmp希望我们输入一个字符串,那我们试试数组
20.起名字真难
题目传送门:http://chinalover.sinaapp.com/web12/index.php
照常,先看看提示
emmm ord函数的作用是返回ASCII值,然后函数的作用是number不能有1-9的,而且number要等于54975581388
php的==会把16进制数解析成10进制。。动手试试。。。
这个flag不想抹/
21.