前言
作为ctf的小白,也是借着学校组织ctf比赛的机会锻炼了一下自己,总的来说,还是有蛮多收获的,理解了一些平时没弄懂的问题,也对接下来的学习有了一个方向,话不多说,记录一下wp。
做题环境:Mac
工具:yakit、hackbar
一、贪吃🐍【源码泄漏】
题目描述是玩游戏得到10000分,即可得到flag,显然不会真的去玩游戏,去看一眼网页源码,发现是一道典型的源码泄漏问题
在源码中发现了可疑的字符串,看样子应该是base64编码的,解码就得到flag了
二、sqlinject【sql注入】
题目描述是问你能否登录,所以先去登录框看了眼。
尝试用万能密码登录一下
在进行了其他尝试了之后发现行不通,找不到注入点:
转换一下思路,猜测问题关键应该是获得正确的用户名和密码。回到原来的页面找线索,发现除了登录页面外还有一个News页面:
运用联合注入,通过group_concat函数将查询到的结果整合到一起,带出所有数据
这里提一嘴,最后不用#而用 --+是因为有时浏览器会将#看作页面标记符,不会进入后端,也就起不到注释作用
同样的方法,找到password:
获得了账号密码就直接登录获得flag
三、http【http请求头】
这题获得flag的方式很明显,就是通过完成题目的要求修改http请求头的信息头。
通过yakit抓包http请求:
一步步按照要求修改完之后:
值的注意的是,从GET模式改为POST需要添加Content-Type,这里post的信息是个表单,所以用默认的x-www-form-urlencoded就行了
提交请求头:
发现要求4失败了,还真只知道XXF,于是上网搜索了一下,发现伪造ip还可以使用X-Real-IP来进行,修改完提交就拿到了flag
四、easy_rce【rce绕过】
分析php代码,可以看出,首要目标是绕过preg_match的限制,实现无字母无数字绕过
这里我采用了URL编码取反绕过
在Mac的终端中使用以下命令行
php -r "echo urlencode(~'system');"
php -r "echo urlencode(~'ls \flag');"
再将得到的结果放入url中,发现绕过成功
*初次写wp,敬请见谅