Upload-Labs的最后几道题
Pass-17 (windows环境,php版本5.2.17,题号是18题)
源码:
1234567891011121314151617181920212223$is_upload = false;$msg = null;if(isset($_POST['submit'])){ $ext_arr = array('jpg','png','gif'); $file_name = $_FILES['upload_file']['name']; $temp_file = $_FILES['upload_file']['tmp_name']; $file_ext = substr($file_name,strrpos($file_name,".")+1); $upload_file = UPLOAD_PATH . '/' . $file_name; ...
Upload-Labs之Pass-16
前言 我在这道题上花了快一天的时间,但是也学到了不少姿势,觉得东西应该足够多,而且参考了的博客发现这道题算是有歧义的,不知道作者想要考察的点是哪一个,所以算是有两种解法吧,可惜的是两种方法都不算是大成功,只有部分成功执行了。
参考博客:upload-labs之pass 16详细分析
Pass-16 源码(三种图片的判定,只贴一个吧,篇幅小一点):
1234567891011121314151617181920212223242526272829303132333435363738394041424344$is_upload = false;$msg = null;if (isset($_POST['submit'])){ // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径 $filename = $_FILES['upload_file']['name']; $filetype = $_FILES['upload_file']['t ...
Upload-Labs(三)
前言 继续接着上一次的Upload-labs往下写。这记下第11-15题,目前进度是20题都已经完成正在抽时间写博客,然后16题是我卡的最久的关,不过也学到了感觉很牛的姿势,所以到时候专门开一篇只讲16。
在线靶机地址:
linux环境
windows环境
Pass-11 (这题使用了windows环境)
源码:
123456789101112131415161718$is_upload = false;$msg = null;if(isset($_POST['submit'])){ $ext_arr = array('jpg','png','gif'); $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1); ...
jsDelivr加速静态博客
前言 这几天总感觉博客访问特别慢,最先是找到了CDN加速,但是在国内加速的话域名都是要备案的,又看了看境外加速。
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。——百度百科
在犹豫要不要买的时候,发现了这个东西:jsdelivr,一个可以加速静态资源的免费CDN,官网上能看的出和WordPress有什么py关系还可以加速github的资源。hexo是静态博客,那么我就把博客要用到的js、css、还有博客用到的一些图片都放github然后引用。开搞
1. 新建仓库
名字重了是因为我已经创建好了并且使用了以后才来写的博客。
2. 克隆Git仓库到本地 在自己电脑建个文件夹然后打开git输入git clone 你仓库的链接,把刚刚创建的仓库拉倒本地方便上传到仓库。
廖雪峰老师的git教程我当时看了一遍, ...
Upload-Labs(二)
前言 这次彻底的从头到尾分析了一下源码的执行过程,大致的写一下,以防以后再看的时候不知道题目是什么情况。
123456789101112131415161718192021222324252627282930$is_upload = false;$msg = null;if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { //这里下面是过滤 $deny_ext = array(".php",".php5",".php4",".html", ......); $file_name = trim($_FILES['upload_file']['name']); $file_name = deldot($file_name);/ ...
Upload-Labs(一)
介绍
大部分的网站和应用系统都有上传功能,而程序员在开发任意文件上传功能时,并未考虑文件格式后缀的合法性校验或者是否只在前端通过js进行后缀检验。这时攻击者可以上传一个与网站脚本语言相对应的恶意代码动态脚本,例如(jsp、asp、php、aspx文件后缀)到服务器上,从而访问这些恶意脚本中包含的恶意代码,进行动态解析最终达到执行恶意代码的效果,进一步影响服务器安全。
在线靶机地址:
linux环境
windows环境
Pass-01 尝试上传php木马,发现提示上传错误
提示只能上传jpg、png、gif类型的图片。查看源码发现是一个前端的后缀过滤,那么我们尝试绕过前端的JS代码。
源码:
1234567891011121314151617function checkFile() { var file = document.getElementsByName('upload_file')[0].value; if (file == null || file == "") { ...
Hackgame2020(二)
一闪而过的Flag 根据题目信息程序每次运行时隐约可见黑色控制台上有 flag 一闪而过,我想到了应该能看程序的代码啥的找到,但是天下武功,唯快不破,下载 运行 截图一气呵成。
接下来让我康康哪一位是瞎子,包括答案里也是满满的嘲讽。
参考答案:flag{Are_you_eyes1ght_g00D?_can_you_dIst1nguish_1iI?}
从零开始的记账工具人 npy给了我一张账单,让我计算账单上面的金额,flag就是由金额组成的。本以为是一个简单的Excel的表格函数解决,打开我傻了。
原来是搞这个大小写金额的转换,没见过Excel有这种操作就去百度,转了一大圈,网上只有数字转大写金额的,没有反过来的。还去了github上找代码,发现运行的结果和自己想要的还是有些出入。卡了有足足半天,之后自己写了一个Java代码跑了一遍,代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748import jav ...
XSS-Lab (一)
头靶机地址:https://buuoj.cn/challenges#XSS-Lab
level 1
观察发现欢迎用户test与URL中的name=test字段对应,尝试修改发现可行。直接将name字段改为name=<script>alert()</script>,完工。
level 2
在搜索栏中的输入会回显到页面,查看网页源代码,发现值在input的value属性中
构造闭合"> <script>alert()</script> // ,构造以后的标签会变成.... value=""> <script>alert()</script> // ">。完工
level 3
老样子构造value属性闭合,尝试"> <script>alert()</script> // 构造闭合,查看网页源代码发现语句变成"> <script ...
Hackgame2020(一)
前言比赛地址:https://hack.lug.ustc.edu.cn/
web签到题 第一题是flag提取器,打开题目以后页面是一个提取器下面一个进度条和一个提取按钮。
随便拉了拉进度条发现初始是0末尾是1.5,然后中间的数值都是小数
我猜的题目可能是想让数值为1时能提取到flag。
F12查看源代码,定位到进度条的标签,查看属性
确实和猜测一样最大最小值分别是0、1.5,注意到step值为0.00001,就是这个属性让我们拖动进度条时,递增的值是小数,想精准得到1个flag,就把网页上的step值改为1。然后随便拖动一下进度条得到1,点击提取按钮,完工。
2048 打开题目是一个2048的小游戏,第一个想法就是玩2048达到一定分数以后会获得flag(可恶这个比赛怎么知道最近我天天在玩2048的),但是想比赛不可能让选手在线玩游戏吧,尤其对于我这种逃课废物是不可能努力哒!
F12开始翻网页资源
还好上次摸鱼课题做了一个网页版的2048,略微能看懂一点点结构,第一个animframe_polyfill应该就是 ...
sql-labs(一)
前言在线靶机地址:https://buuoj.cn/challenges#sqli-labs
less-1 首先说明sql注入的大致步骤:
判断注入类型。如整型字符型注入等。
判断列数
判断数据的回显位
构造sql语句
根据题目提示,说明是一个单引号注入题目,构造一个带单引号的语句?id=1',发现数据库报错
通过后面的报错语句1'' LIMIT 0,1的分析,我们的单引号被数据库解析,那么说明我们也可以使用连接查询union插入我们想要查询的语句。
推出数据库的查询的部分语句可能为where id = '$id'LIMIT 0,1,那么通过构造闭合?id=1' [这里添加语句] --+添加自己想要语句,语句后面的--+作用是将后面的其他语句注释掉。
首先是判断字段个数:?id=1' order by 1 --+,页面显示正常,直到尝试?id=1' order by 4 --+发现数据库报错
说明数据库的字段值只有四个。
接下来测试数据的回显位,构 ...