好长时间没有更新了,这段时间一直在忙各种各样的事情,这几天终于忙完了,也能继续静下心来打CTF了。
这么长时间不打CTF,感到自己功力尽废,也是时候弥补这一个月落下的进度了。
[61dctf]admin
分值:100
考察查看robots.txt、基本的抓包改包操作
点进去一看只有Hello World,查看网页源代码也没有什么有用的信息
尝试了index.html、admin.html、login.html,都是not found,这时突然想到robots.txt,果然有发现
访问这个页面,得到了一个flag,但是提交了一下显示不对,所以这是个假flag
根据以往的做题经验,这时候在请求头里一定有一个admin=0或者类似的东西,于是抓包
把这个admin=0改成admin=1,发包,成功得到真正的flag。注意flag后面有一个空格,记得提交的时候把它删掉,否则会显示答案错误。
PORT 51
分值:100
考查curl命令指定端口
打开一看写着“Please use port 51 to visit this site.”,本来以为是要访问51号端口,想了想好像不是,应该是必须通过本地的51端口来访问这个网站,这时候就要用到curl --local-port指定端口号了。
--local-port参数的解释如下:
居然不弹flag,本来以为是自己的方法出错了,但是之后看了很多别人的wp也是用的完全一样的方法,估计是题目挂掉了?也想不到什么别的原因了。
这个做法应该是没错的,没办法只好用了别人的flag。
LOCALHOST
分值:150
考察XFF头
打开一看只有“localhost access only!!”,那肯定是要在请求头里加“X-Forwarded-For: 127.0.0.1”来绕过了。
抓包,加上XFF发包:
拿到flag:
Login
分值:250
考察md5()函数和SQL注入
这道题比较复杂,原理我也想了很久才搞明白。
点进去一看只有一个Login,而且网页源代码里没有有用的信息。
这时候应该就是SQL注入了。看了一眼响应头发现一条hint:
SQL注入没跑了。
这个.md5($pass, true)的意思大概是这样:
到这里我也蒙了,百度了一下找到了一开始放的那篇参考文章,才知道原理大概是这样子:
这题的答案“ffifdyop”在经过如Hint中所述的md5()函数处理之后得到的结果是'or'6×××××(后面都是乱码,只有'or'6是有用的),而SQL语句在判断时,如果'or'后面是一个数字,就会被判断为真,也就达到了SQL注入的效果。
而根据Hint,这道题只需要提交ffifdyop这个答案就可以了。
不过这个ffifdyop是怎么找到的呢?还是没有搞明白,以后慢慢想吧。
[61ctf]babyphp
分值:200
考察Git源码泄露、PHP代码注入
打开一看是一个网站,随便翻了翻发现一个提示:
可以想到Git源码泄露,于是直接上GitHack:
随便看了一下源码,有一个flag.php但是什么有用的信息都没有,但是在index.php里发现了assert代码注入漏洞:
此段代码中的关键部分含义如下:
- templates和传入的page参数和.php后缀结合赋给变量file
- file经过滤..()防止目录遍历
- 判断文件是否存在
assert()函数把传入的字符串当做PHP代码执行,可以通过构造可控的参数file来执行代码读取flag.php
payload:/index.php?page='.system("tac templates/flag.php").'
试了好几次,不知道为什么cat就不行而tac就可以。。。
拿到flag。
网友评论