
攻防世界
显哥无敌
南京赵显
展开
-
攻防世界 WEB easy_laravel
这题我一开始是在攻防世界做的,但是不知道今天靶场又抽什么风了。。。。反正两个靶场配置有点不一样,但是出入不是很大,BUUCTF需要提前手动利用管理员邮箱reset_password一下,攻防世界不需要打开场景,审计页面源码,发现源码地址直接给出来了,非常的简单粗暴啊https://github.com/qazxcv123/easy_laravel建议把源码下下来,自己搭个环境慢慢看,不然不方便。那就看源码呗,先看路由,mvc的入口点哦对了先说一下,larvel是一个PHP的web框架在一个个尝试路原创 2022-02-06 10:45:10 · 3691 阅读 · 0 评论 -
攻防世界 WEB Web_python_flask_sql_injection
没啥好说的,题目已经把几个关键点给出来了,flask,sql注入,还给了源码那么就是源码审计,这题sql注入的点属实是有点多,普通的也有,难的也有,也难怪他是个九分题干就完了,下载源码,第一个注入点是routes.py里面的index路由项res = mysql.Add("post", ['NULL', "'%s'" % form.post.data, "'%s'" % current_user.id, "'%s'" % now()])原创 2021-12-13 09:09:16 · 1154 阅读 · 0 评论 -
攻防世界 WEB upload
打开场景,查看到一个登录和注册页面。然后sql注入没发现什么注入点那么就随便注册一个账号,wangxiang,wangxiang,登录,发现文件上传点尝试上传1句话,发现对后缀做了限制那么就尝试图片码,发现jpg图片可以上传,且会回显上传的文件名,这就是本题的关键点,在这里进行sql注入,然后就可以拿到flag用burpsuite抓包的方式进行演示,下面的问题就纯粹是一个sql注入的绕过问题经过检测,经典单引号闭合,select from单次过滤(双写可绕过),回显格式过滤(转成数字),要先将字符原创 2021-10-11 10:47:56 · 128 阅读 · 0 评论 -
攻防世界 WEB Background_Management_System
上一题smarty靶场好像有点问题,shell传上去连不上去,包括这一题好像也比原题少了些东西先看看吧,这一题,老问题,注册,登录,发现没漏洞,扫目录,发现www.zip源码审计,在application/index/controller/里面的UserInfo里面发现问题$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";前面注册登录页面都对转义字符做了过原创 2021-10-08 11:05:16 · 424 阅读 · 0 评论 -
攻防世界 WEB ics-02
考的是sql注入,结合之前的ics系列,肯定要从唯一有用的a链接入手,发现文档中心可以进入,点进去,又发现一个a链接 <a href="download.php?dl=ssrf">paper. </a>下下来download.php,打开可以发现pdf之类的头,那么就是个pdf,结合ssrf的提示,后面可能会有用然后扫一波目录,发现/secrets目录发现里面有secret_debug.php和secret.php两个文件,其中debug文件不能直接访问,那么ssrf大概就原创 2021-10-01 20:45:46 · 293 阅读 · 0 评论 -
攻防世界 WEB filemanager
这题有源码泄露,先扫一波,dirsearch -u http://111.200.241.244:58290/扫出来var.www.gz,下下来分析,直接上有错误的sql注入点吧,在rename.php里面,在rename的时候并没有对文件后缀进行检验,特殊字符也没有过滤,那么这里就是注入点if ($result) { $req['newname'] = basename($req['newname']); $re = $db->query("update `file` set `fil原创 2021-09-27 19:54:02 · 1118 阅读 · 1 评论 -
攻防世界 WEB Web_python_block_chain
这题是区块链题,对区块链不是很了解,想了解原理的建议看这一篇https://blog.youkuaiyun.com/hxhxhxhxx/article/details/108111692简单介绍一下双花攻击的原理吧,就是区块链是去中心化账本,而且默认长度最长的是主链如果用户自持有的账本长度大于中心化中心的账本,那么所有的节点都会以当前用户的账本覆盖当前持有的账本,这边是0确认,就是整个链里就你一个人,所以没有人跟你竞争,所以一定会成功。具体的也不清楚,直接看大佬的脚本吧具体要改的就是url的三个参数和三个ad原创 2021-09-15 10:31:35 · 6276 阅读 · 0 评论 -
攻防世界 WEB blgdel
这题其实纯粹的累傻小子,当然,可能有大佬知道如何绕过那个图片验证码但是没有写wp的话,那当我没说,我已经注册好了,zhaoxian打开场景,看看源码,没找到啥可利用的点,那就扫目录吧,扫出来robots.txt,想都不用想,进去看看提示config.txt,继续查看<?phpclass master{ private $path; private $name; function __construct() { } function stream_open($pat原创 2021-09-12 17:45:35 · 262 阅读 · 0 评论 -
攻防世界 WEB wtf.sh-150
发现username里除了有个username还有个token,经过检测,token是我们注册wangxiang账号的,和users目录下的一样,换成admin的那现在就剩下一个username等于admin没满足的,点进admin页面,在这里抓包,出现/profile.wtf?user=jlvfK,这里的user应该就是admin计算出的结果,满足username为admin得到flag1Flag: xctf{cb49256d1ab48803只有一半怎么行,继续往下找,既然多次发现了.wtf后缀,那原创 2021-09-08 15:30:38 · 280 阅读 · 0 评论 -
攻防世界 WEB ZHUANXV
打开场景,根据提示提示,扫描目录,扫出来一个/list,提示要先登录,先抓个包看看,在第二个包出抓到了形如/loadimage?fileName=web_login_bg.jpg再熟悉不过了,文件包含,结合cookie里的phpsession和jsessionid可以判断出,后端同时使用了java和php那么,既然是java项目,就尝试读取一下web.xml,这个是javaweb项目最基础的一个xml文件,一般再WEB-INF目录下构造/loadimage?fileName=…/…/WEB-INF/w原创 2021-09-07 14:11:03 · 481 阅读 · 0 评论 -
攻防世界 web web_php_wrong_nginx_config
打开场景,就一个登录界面,尝试SQL注入,没什么发现那就扫一波目录吧扫出来/admin目录和/robots.txt,进robots.txt看一看User-agent: *Disallow:hint.phpHack.php又拿到两个线索看看hint.php 配置文件也许有问题呀:/etc/nginx/sites-enabled/site.conf拿到线索,那么就要找任意文件读取,看看这个配置文件长啥样,访问Hack.php,看上去就像是别人给我们留的后门只不过这个后门还要我们登录,what?原创 2021-09-05 10:54:17 · 405 阅读 · 0 评论 -
攻防世界 WEB COMMENT
三个点,git源码泄露,密码爆破,sql二次注入点进去一个留言窗口,看了看源码,没啥那就dirsearch扫一波,扫出来一堆git,那么就尝试GitHacker看看能不能跑出来源码githacker --url http://111.200.241.244:49854/ --folder result3进到result3里面发现一个write_do.php看了看源码,明显没写完,case下面直接break之前扫目录的时候还扫出来一个login.php,进去看看,发现用户名zhangwei,密码z原创 2021-09-04 18:37:06 · 361 阅读 · 3 评论 -
攻防世界 WEB i-got-id-200
这题考的是perl的任意文件,结合ARGV参数可以读取任意文件具体可以看这篇在文件上传页面,通过修改burpsuite抓到的包,可以实现读取任意路径具体做法:在原包上面复制一份抓到的文件内容,然后把文件名去掉,在下面加上一行ARGV,最后在url上加上?+文件路径由于ARGV写在了原文件内容的前面,所以由于param函数只读取第一个文件内容的属性,读取了我们传入的文件路径的内容当然可以看一下/var/www/html/cgi-bin/file.pl的原文件内容```perl use stric原创 2021-09-01 13:03:22 · 251 阅读 · 1 评论 -
攻防世界 WEB unfinish
这题考的是sql注入里的二次注入看了半天login界面,发现没什么好利用的,考虑是否其他页面有可供利用的注入点先用dirsearch扫一波,发现register页面,这个页面里多了一个username参数,那么这就是我们这题的关键点,在注册完成后,登录,username会在主页里面回显,而且login界面显然没有对username做过滤,所以手动尝试payload:1’+'1只要登陆成功后页面回显的username是2,就说明二次注入成立下面就是爆破问题由于过滤了一堆关键字,所以需要通过asc原创 2021-08-31 12:46:21 · 191 阅读 · 0 评论 -
攻防世界 WEB bug
这题又是登录注册找回密码的,很像sql注入,但是注了半天也没注出来,好吧,是思路单一了这题的关键点其实在找回密码页面,他所要求的信息有三个:用户名:admin,出生年月日和地址其实注册登录之后发现在personnel页面是显示这个信息的,于是就尝试是否存在水平越权emmmm。。。是存在的,burpsuite抓包,cookie里有个md5值,经过检验是uid:用户名的md5值同时url里面的uid也要改为1,这样就成功得到了更改admin密码的三个信息,注销,登录admin账号,点击manage,显示原创 2021-08-26 16:49:03 · 395 阅读 · 0 评论 -
攻防世界 WEB Confusion1
这题其实跟php没关系,不要被hint给骗了,扫一波目录,就知道其实是用python开发的emmm。。。找了一圈,没发现有什么有用的东西,看目录结构,盲猜是flask既然是flask,之前做了好多SSTI,那么就试试,果然{{7*7}}回显49,确实存在ssti这题的主要考点其实是过SSTI的过滤,经测试,直接''.__class__被过滤了需要换成{{''[request.args.a]}}?a=__class__其实就跟sql预处理差不多,做一个占位符,然后执行的时候通过参数具体赋值既然找到原创 2021-08-26 13:41:13 · 206 阅读 · 0 评论 -
攻防世界 WEB ics-07
这题就是单纯的源码分析,代码一共三段,第一段没什么好看的,page参数不是index.php就行,重点关注后两段,需要注意的点都写了注释了,那么,就总结一下其实先执行的是第二段,对id参数进行了判断,id参数要有且浮点化第一位不能是1,1.0000和‘1’当然不等,最后一位得是‘9’,因此构造id=1,9成功回显admin,那么有了admin权限,就可以判断第一段,文件路径是拼接来的,完整路径是uploaded/backup/文件名也是用户自己起,只不过正则过滤掉php,php3,php4,php5,原创 2021-08-25 16:04:33 · 193 阅读 · 0 评论 -
攻防世界 WEB leaking
这题考的是node.js沙箱逃逸,之前没遇到过,属于是又学到新知识了具体看这一篇,https://juejin.cn/post/6889226643525599240简单说一下原理吧,就是理论上沙箱里的代码只能与vm上下文打交道,可是vm上下文确是可以与沙箱外的代码和变量打交道的,因此,如果我们能够构造请求,使得vm上下文代替我们去读取利用沙箱外的代码和变量的话,那就形成了沙箱逃逸,拿这一题来举个例吧先看一下代码"use strict";var randomstring = require("原创 2021-08-25 11:59:51 · 408 阅读 · 0 评论 -
攻防世界 WEB lottery
这题我早上做的时候还没有附件的,因为出题者引用了几个外网链接,所以这题我早上做的时候巨卡无比,我一度以为是靶场又崩了下午官方索性直接把源码全放出来了,应该是改过容器配置了,相对来说顺畅了许多,一个显眼的robots.txt,那就看看.git。。。。emmm,源码泄露没跑了看一下主页的四个链接,注册,购买,市场,应该是一个简易的博彩网站鉴于附件已经提供了源码,那就没必要用GitHacker去跑源码了。好吧,审阅源码,market.php只做了一件事情,请求api.php,根据返回结果判断钱是否足够,跟踪原创 2021-08-24 17:53:05 · 154 阅读 · 0 评论 -
攻防世界 WEB FlatScience
听说这个题一开始是个1分题。。。。what???????这题结合了sql注入,爬虫爬取以及pdf识别内容和sha1撞库,你告诉我只有一分???????好吧,可能是我太菜了打开场景,一堆a链接,打开看到是一堆pdf,查找一下发现也没有啥,扫描一波目录,发现robots.txt,进去看看发现login.php和admin.php,尝试sql注入,admin页面根本没回显,好吧,那么有问题的页面就只剩一个login.php了先尝试一个简单的单引号1’,有回显,sqlite数据库,id是注入点,后面密码明显原创 2021-08-24 16:47:43 · 280 阅读 · 0 评论 -
攻防世界 WEB favorite_number
这题考的是PHP一个整数溢出漏洞。PHP5.5.9给出具体版本,那大概就跟这个版本有关系了找啊找啊找啊找:https://bugs.php.net/bug.php?id=69892就是这个漏洞,官方写的很明白,整数在16进制下是8位数,一旦出现第九位是1,那么这个下标在比较的时候和下标为0是一样的,16的8次方是4294967296,同理16的9次方也行(测试过,第一位是1,后面全是0的16进制数都行)这样我们就找到了下标不同,而数组内容相等的方法下面就是如何利用echo了,有两种思路,一种:l原创 2021-08-23 21:48:32 · 1039 阅读 · 0 评论 -
攻防世界 WEB ics-05
这题其实有问题页面挺好找的,因为只有一个能点进去,哈哈设备维护中心,然后照例查看源码,发现其实并没有很多的html代码,而是通过一个形如?page=index导入进来的页面,是什么不用说了吧,文件包含那么,base64读一下源码,php://filter/read=convert.base64-encode/resource=index.php都回来的东西base64解码<?phperror_reporting(0);@session_start();posix_setuid(1000)原创 2021-08-23 20:50:59 · 99 阅读 · 0 评论 -
攻防世界 WEB cat
这题考的是本地文件读取打开页面很像命令执行,但一番看下来,127.0.0.1|ls之类的并不是好吧,换思路点击send,会添加url参数在尝试命令执行的时候,`被编码成%60尝试一下边界值%80,发现报错,把回显的html内容保存本地打开发现是django的报错页面,从报错信息中,我们可以看到项目路径/opt/api和数据库的地址/opt/api/database.sqlite3至于路径上为什么要加上@,是因为这是通过代码里用了curl,读取本地文件要加@,原题是有提示的,这里没有就只能凭经验原创 2021-08-21 13:40:50 · 256 阅读 · 0 评论 -
攻防世界 WEB fakebook
这题是一个sql注入题图省事情,可以直接放在sqlmap里面跑,当然也可以在后面view.php有注入点的地方手动跑把注册过程中的post包截下来,放进sqlmap,就可以跑出数据库,表明,列名,数据从结果来看,我们可以看出fakebook表内有四列下面开始扫目录dirsearch -u http://111.200.241.244:53908/扫出来一个robots.txt和flag.php,那就进去看看,看到user.php.bak,那么就存在源码泄露,flag.php无法看见内容<原创 2021-08-21 12:44:01 · 128 阅读 · 0 评论 -
攻防世界 WEB web2
这题比较简单,就是一个解密题说一下base64_encode反过来是base64_decodestrrev表示反转字符串,反过来是strrev反反得正str_rot13表示将字符串每一位在字母表中前进13位,那么再来一次,就是进了26位,相当于走了一圈,又回到原位有了这些知识,写脚本就不难了加密代码<?php$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";function encode($st原创 2021-08-20 13:29:15 · 126 阅读 · 0 评论 -
攻防世界 WEB mfw
这题考的是两个点:Git泄露和assert函数执行代码先说Git泄露,通过About发现该网站使用了Git,查看/.git目录发现确实存在泄露情况那么下载GitHacker工具查看源码pip3 install GitHackergithacker --url http://111.200.241.244:60711/ --folder result1 //这里的folder表示的是输出文件夹然后查看源码,在index.php里面发现assert函数$file = “templates/” . $原创 2021-08-20 13:08:36 · 243 阅读 · 0 评论 -
攻防世界 WEB shrine
这题也是SSTI 先在pycharm里调整下代码import flaskimport osapp = flask.Flask(__name__)app.config['FLAG'] = os.environ.pop('FLAG')@ app.route('/')def index(): return open(__file__).read()@ app.route('/shrine/')def shrine(shrine): def safe_jinja(s):原创 2021-08-17 13:11:06 · 156 阅读 · 0 评论 -
攻防世界 WEB easytornado
这题两个考点,SSTI和easytornato的cookie机制打开场景,三个路径,打开/flag.txt,直接给出flag所在的文件路径 /fllllllllllllag然后第二个文件提示我们用了render函数,render函数是python用来模板渲染的函数看这个:https://www.jb51.net/article/148937.htm然后第三个hints.txt有这样的提示:md5(cookie_secret+md5(filename))点击每一个文件url都会变成这样file?fi原创 2021-08-17 12:08:10 · 210 阅读 · 0 评论 -
攻防世界 WEB supersqli
这题在buuctf做过,一模一样,直接上payload,可以看https://blog.youkuaiyun.com/qq_41696858/article/details/119513224:1’ 报错。证实是单引号闭合union select 返回过滤字符过select:-1';show databases;# 爆数据库-1';show tables;# 爆表-1';show columns from `1919810931114514`;# 爆列名方法1:-1';set @sql原创 2021-08-16 11:03:55 · 114 阅读 · 0 评论 -
攻防世界 WEB WEB_PHP_UNSERIALIZE
首先需要讲明的一件事是,PHP序列化的时候对public protected private变量的处理方式是不同的具体看这篇文章,https://blog.youkuaiyun.com/Xxy605/article/details/117336343,注意,这里的\00表示是不可见字符,并不是单纯的\00,相当于url里面的%00所以需要自己写代码让编译器帮我们做序列化这题源码没什么难度<?php class Demo { private $file = 'index.php'; pu原创 2021-08-16 10:20:47 · 208 阅读 · 0 评论 -
攻防世界 WEB web_python_template_injection
这题考的是python ssti简单来说,就是模板渲染出了问题,会把某些特定表达式里面的值当成代码处理验证很简单{{7*7}},只要返回的是49,就表明存在ssti注入然后这类题的基本思路就是通过object类找到eval或者os模块,从而进行系统函数调用需要用到的魔法方法:__class__万物皆对象,而class用于返回该对象所属的类,比如某个字符串,他的对象为字符串对象,而其所属的类为<class 'str'>。__bases__以元组的形式返回一个类所直接继承的类。原创 2021-08-13 12:55:36 · 178 阅读 · 0 评论 -
攻防世界 WEB upload1
这题算是最简单的上传题了后端PHP没做任何过滤只是在前端做了js验证那么,上传一个图片文件然后在burpsuite里面抓包,把文件后缀名改了,把内容改成一句话,就成功过了前端验证手动shell没回显,需要用到菜刀over!参考视频链接:https://www.bilibili.com/video/BV1af4y137Lc...原创 2021-08-12 10:52:14 · 363 阅读 · 0 评论 -
攻防世界 WEB unserialize3
这题考的是PHP序列化和wakeup函数的绕过,当序列化后的属性多余对象实际属性时,wakeup函数就不会调用__construct() //当一个对象创建时被调用__destruct() //对象被销毁时触发__wakeup() //使用unserialize时触发__sleep() //使用serialize时触发__toString() //把类当做字符串时触发__get() //用于从不可访问的属性读取数据__set() //用于将数据写入不可访问的属性由此构造paylo原创 2021-08-06 10:32:21 · 119 阅读 · 0 评论 -
攻防世界 WEB PHP2
这题可能需要手动发现源码地址,index.phps反正我是用了好几个扫描器都没扫出来出现这个文件,是服务器端的管理配置错误,一般来说是不应该向用户提供源码的扫出来,然后发现部分源码,查看页面源码,得到全部代码下面就是url编码的问题了,由于英文字符是默认不编码的,所以想要过第一个if的话,需要自己手动编码参看百度百科url编码的规则,a的编码规则是ascii码97转成16进制61,再加一个%,即%61那么由于在发送请求时url会自动解码一次,就将%再编一次码,%2561,这样就能绕过,得到flag原创 2021-08-05 11:35:01 · 164 阅读 · 0 评论 -
攻防世界 WEB NaNNaNNaNNaN-Batman
下载附件,大大的script写在上面那么就是js源码分析了,js里有乱码。把文件名改为.html,然后利用js里面的alert函数读取函数内容(html解不了的码,js可以解)function $(){var e=document.getElementById("c").value;if(e.length==16)if(e.match(/^be0f23/)!=null)if(e.match(/233ac/)!=null)if(e.match(/e98aa$/)!=null)if(e.match(/原创 2021-08-04 12:25:22 · 131 阅读 · 0 评论 -
攻防世界 WEB newscenter
看到提交框就条件反射sql注入先sqlmap跑,能跑的情况下优先把burpsuite抓到的包保存为1.txtsqlmap -l 1.txtsqlmap -l 1.txt --dbssqlmap -l 1.txt -D news --tablessqlmap -l 1.txt -D news -T secret_tables --columns --dump一套组合拳打完,成功拿到flag当然可以自己手工注入' and 0 union select 1,table_schema,tabl原创 2021-08-03 10:38:59 · 348 阅读 · 0 评论 -
攻防世界 WEB warmup
这题的原型是php 4.8.1任意文件包含漏洞细节看这个https://www.cnblogs.com/leixiao-/p/10265150.html简单来说,就是你带过去的目录路径如果出现了形如/(windows下)或者…这样的东西,解析器会认为你人为制定了path,那么在这之前的所有东西都忽略不计从这里开始解析路径,详情看PHP include函数说明被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_p原创 2021-08-02 12:31:35 · 184 阅读 · 0 评论 -
攻防世界 WEB WEB_PHP_INCLUDE+ics-06
ics-06:提示报表中心有东西,那就进报表中心?id=1 送分题,硬跑就完事了kali自带的社区版burpsuite是在不敢恭维,自己写个脚本跑吧import requestsurl='http://111.200.241.244:54758/index.php?id=1'r=requests.session()response=requests.get(url)print(len(response.text))for i in range(1,10000): url = 'h原创 2021-08-01 13:01:03 · 113 阅读 · 1 评论 -
攻防世界 WEB baby_web+WWW-Robots+php_rce
baby_web入门级题目,根据提示想到index.php,然后发现访问会302重定向那就抓个包看看,发现flag在response header里WWW-Robots就差告诉你答案在robots.txt里面了直接访问,得到//fl0g.php直接访问,得到flagphp_rce这题考的是php 5.0版本的一个远程命令执行漏洞具体情况可以看这一篇https://blog.youkuaiyun.com/qq_40884727/article/details/101452478当ThinkPHP 5.原创 2021-07-31 12:42:21 · 166 阅读 · 0 评论