2019-05-11 Jarvis OJ Writeup之Web

2019-05-12  本文已影响0人  NoelleMu

好长时间没有更新了,这段时间一直在忙各种各样的事情,这几天终于忙完了,也能继续静下心来打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注入

这道题比较复杂,原理我也想了很久才搞明白。

参考资料:https://blog.csdn.net/March97/article/details/81222922

点进去一看只有一个Login,而且网页源代码里没有有用的信息。

这时候应该就是SQL注入了。看了一眼响应头发现一条hint:

SQL注入没跑了。

这个.md5($pass, true)的意思大概是这样:

来源:http://www.w3school.com.cn/php/func_string_md5.asp

到这里我也蒙了,百度了一下找到了一开始放的那篇参考文章,才知道原理大概是这样子:

这题的答案“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代码注入漏洞:

参考资料: https://www.cnblogs.com/sn00py/p/5925944.html

此段代码中的关键部分含义如下:

  1. templates和传入的page参数和.php后缀结合赋给变量file
  2. file经过滤..()防止目录遍历
  3. 判断文件是否存在

assert()函数把传入的字符串当做PHP代码执行,可以通过构造可控的参数file来执行代码读取flag.php

payload:/index.php?page='.system("tac templates/flag.php").'

试了好几次,不知道为什么cat就不行而tac就可以。。。

拿到flag。

未完待续……

上一篇 下一篇

猜你喜欢

热点阅读