1.签到题
f12看源码就行了。
md5 collision
题目贴出了源码,按照题意,a不等于QNKCDZO但是md5与QNKCDZO的md5相等时就可以获得flag。
如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。
下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
以get的方式传a,值取以上不为QNKCDZO的值即可。
2.签到2
http://teamxlc.sinaapp.com/web1/02298884f0724c04293b4d8c0178615e/index.php
在输入框里面输入zhimakaimen,我们会发现最后一位数没有办法输入进去。
右键检查一下会发现源码里面设定了maxlength为10.
更改这个数值,让zhimakaimen能够全部输入在输入框之后点开门就出现flag了。
3.这题不是web
http://chinalover.sinaapp.com/web2/index.html
打开题目是一个猫猫的动图。
用一句话木马的时候经常把一句话木马藏在图片的里面,我们把图片下载下来,用记事本打开,在最后一行就可以看到flag了。
4.层层递进
http://chinalover.sinaapp.com/web3/
f12查看源码,会看到一个网址。
点进去看看?
跟刚才差不多的界面。继续查看源码。
继续。
O和0是不一样的(汗)
404.html终于不是先前的界面了。
查看源码,发现奥秘。
5.AAencode
http://homura.cc/CGfiles/aaencode.txt
做题做到一半无法访问了?
6.单身二十年
http://chinalover.sinaapp.com/web8/
这个题目名让我感到深深的恶意。
打开bp,抓包。
点击到这里找key。
抓到包了,send to repeater。
在response里面发现flag.
7.php decode
这道题目没有链接。
题目给了一段源码。
1 <?php 2 function CLsI($ZzvSWE) { 3 4 $ZzvSWE = gzinflate(base64_decode($ZzvSWE)); 5 6 for ($i = 0; $i < strlen($ZzvSWE); $i++) { 7 8 $ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1); 9 10 } 11 12 return $ZzvSWE; 13 14 } 15 eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA==")); 16 ?>
把这段代码运行一下就行,为了显示出结果,把eval换成echo。
8.文件包含
http://4.chinalover.sinaapp.com/web7/index.php
链接题目:bugku flag在index里
这道题与flag在index里是一个考点,然而我又忘记怎么做了……
来复习一下吧。
参考链接:php伪协议
我们不仅要知道这道题怎么做,还要知道后面的原理(/(ㄒoㄒ)/~~)
就可以获得以base64编码的index.php的源码。
找个网站解码就可以了。
从源码中可以看到屏蔽了’../’ ’tp’ ’input’ ’data’。
9.单身一百年也没用
这道题和单身二十年是一样的做法。
单身二十年是重定向,这道题是302跳转。
10.Download~!
打不开了……
看了看大佬们的writeup,是通过更改url把download.php下下来(完全想不到QAQ),虽然做不了但是还是记录一下。
11.COOKIE
http://chinalover.sinaapp.com/web10/index.php
抓包,cookie上的Login=0,改成1send过去就行了。
12.MYSQL
http://chinalover.sinaapp.com/web11/
那就扫扫后台吧。
其实直接/robots.txt就可以了(_〆(´Д` ))
扫到了robots.txt,打开来看看。
提示是sql.php,并且源码中显示会用get方法获得id。
打开sql.php,试一下id=1024.
注意看源码,源码里面有一个intval函数,用来取整,在与1024比较的时候没有将其取证,而echo的时候的id是取整过的id,所以取1024.1就可以绕过比较输出其中的内容了。
13.GBK Injection
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1
原理:参考链接
在单引号前面加上%df绕过转义。
查字段数。
3的时候会爆错,字段数为2.
看哪一个能够回显,id=-1是为了能够爆错显示信息。
查当前数据库。
查表名。
根据题目名猜测flag在gbksqli里面。
查列名。这里因为单引号被转义,要将gbksqli转换成16进制ASCII码。
查数据。
提交上去发现失败了……(;´д`)ゞ
最后发现表名是ctf4……
14./x00
http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php
strpos:查找 "php" 在字符串中第一次出现的位置
ereg函数遇到%00会截断或者为数组时返回值不为false。
或者。
15.bypass again
http://chinalover.sinaapp.com/web17/index.php
一个简单的md5绕过。
a,b都是数组就行了。
16.变量覆盖
http://chinalover.sinaapp.com/web18/
source at /source.php
点进去看源码。
这里有一个extract函数,用post传值相同的pass和thepassword_123就可以了。
17.PHP是世界上最好的语言
题目没了……
18.伪装者
http://chinalover.sinaapp.com/web4/xxx.php
伪装ip,这里用X-Forwarded-For是不行的,要用Client-IP。
抓包,在头部加上Client-IP=127.0.0.1。
19.Header
也没了/
20.上传绕过
http://teamxlc.sinaapp.com/web5/21232f297a57a5a743894a0e4a801fc3/index.html
00截断绕过。
原理:https://blog.csdn.net/weixin_44840696/article/details/90581104
随便找个图片上传,用bp抓包。
在/uploads/后面加上1.php再加上一个空格。
转到16进制,在这一行找到1.php的16进制,找到20(空格的十六进制表示),然后改成00.
会变成这样。
send。
获得flag。
拓展:其他文件上传绕过方法