Unc1e
Unc1e
刷CTF的WriteUp [持续更新]

随缘写、随缘更新,多写有意义的

题目复现

SCTF2020:CloudDisk

第二次解题:
构造出:

找flag找了半天,试了各种/flag, /flag.txt ,都不行,完全没想到flag在/app/flag
好在最后学到一手/proc/[PID]/cwd , 利用相对路径flag/proc/self/cwd/flag来读flag即可

不断学习吧!
下面是第一次解题的思路:

http://120.79.1.217:7777/
1.【链接】Koa框架教程
http://www.ruanyifeng.com/blog/2017/08/koa.html
1. https://drive.google.com/file/d/1lVTIESyhJg3sdHq8L1PkYOZ4hZi0Rkru/view

nodejs的上传,在网盘里是源码,我加了些注释

可以上传任意文件,路由是/uploadfile,返回一个md5散列过的fileId,企图在github找突破口,无果。

image.png

不过看源码,根据fileId,可以经过路由/downloadfile下载文件,如/downloadfile/c79b9347fbc28ebe7eb1e28f732eae34
down.png

联想到源码中的SECRET并没告诉我们,于是想去跨目录读一下完整的app.js源码,即用../app.js去读

看到了这篇文章中的说法,即服务器拿到参数后会先url解码。

koa-send 的源码中,会对文件路径进行 decodeURIComponent() 解码.
容易出现的一个问题是在处理中文名字的文件时,解码后去下载含中文的路径,而我们服务器中存放的是编码后的路径,会找不到对应的文件。

但是尝试了url编码之后,发现并不能成功跨目录

notfound.png

遂跑去看koa-send文档
人家说了,为了防止目录拼接造成的危害,不允许包含.,还给了实例代码

Note that root is required, defaults to '' and will be resolved, removing the leading / to make the path relative** and this path must not contain “..”, protecting developers from concatenating user input.** If you plan on serving files based on user input supply a root directory from which to serve from.

For example to serve files from ./public:

之前还尝试跨目录读/flag,木大木大(无果)。等出了wp再复盘吧。
【续上】
通过json数组,伪造上传文件,实现任意文件读取。注意Content-Type要设为application/json,否则服务器500

json.png

用路由/downloadfile/下载就好了。尝试读了app.js
/etc/passwd /flag flag,最终得到flag
appjs.png

flag.png

reference

PHP_RCE

找flag

拿flag

插入一句话

护网杯 2018: easytornado


/file?filename=/flag.txt&filehash=e29f088bb9557d44c541f3f5d870e73d

反序列化常见题目,index.php接收参数进行反序列化,满足特定条件『username === 'admin' && password === 100 &&不进入__wakeup函数』,即可获得flag。
不过需注意的是,常见的反序列化题目为了防止传参中的不可见字符如\00不好传递,一般都是传base64编码过的值,这里是直接get方式传参,尝试直接用curl请求报错了,所以我选择用python中的requests来请求。
生成序列化字符串php代码

构造好序列化的字符串之后,就只剩跳过wakeup函数这一个要求未满足了,有这个点
反序列化时,当成员属性数目大于实际数目时,可绕过wakeup方法(CVE-2016-7124)
也就是把Name后面那个2,改成比2大的数就好了(我改的3)
发出请求即可

强网杯 2019:easy_sql

在正常的语句后面加分号(;),可顺序执行多条语句,从而造成注入漏洞。
注意
堆叠注入
显示表的列的信息
show [columns] from [table_name];
desc [table_name];
select * from information_schema.columns where table_schema=[] and table_name=[];
更改表的名字
RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...];
alter table [table_name] to [new_name];
更改字段的名字
alter table t_app change name app_name varchar(20) not null;
预处理语句

在本题中,要注意关键词的绕过,用concat()跟char函数来拼凑出select关键字

ref:
• https://blog.csdn.net/c1ata/article/details/105606484

scuctf 签到

这真的是签到题,很简单的

1567952484919

jsfuck, 直接复制, 输到console里即可

scuctf Tor-Ex-1

解题链接

Powered by tcpsoft师傅

再次感受到题面信息的重要性, **题目名、题目下的描述、包括首页的名字*, 都要结合起来看, 比如本次的payload, 跟其他hint 2~7的页面都没关系…

1567953280504

scuctf Tor-Ex-2

结合上下文, 勤按f12

1567953646924

scuctf Tor-Ex-3

base32(1234567)= GEZDGNBVGY3Q====
特征:大写字母和数字,不满5的倍数,用‘=’补齐。
base64(1234567)= MTIzNDU2Nw==
特征:大小写字母和数字,不满3的倍数,用‘=’补齐。
base58(1234567)= 2s8YYFs4Vc

————————————————
版权声明:本文为CSDN博主「nocbtm」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nocbtm/article/details/90242650

那么这里, 先是结合上下文, 把第二步的flag传进去, 看到这样的加密

1567954191912

base32->base64->hex->caesar解密即可

scuctf Tor-Ex-4

http://120.78.66.77:15000/Tor-Ex/hint4.php?hint=base&flag=scuctf{base_base_base}

scuctf hash collision

三个简单的小谜题

解题链接

前面两小关都是小菜, 弱类型就可以搞定

第三关遇到个真boss, hash碰撞

ref:https://www.jianshu.com/p/c9089fd5b1ba

https://pequalsnp-team.github.io/cheatsheet/crypto-101

https://www.mscs.dal.ca/~selinger/md5collision/

https://marc-stevens.nl/research/md5-1block-collision/

碰撞视觉化https://www.links.org/?p=6

scuctf 计算器

我们需要一个复读。。。不不不,计算器

写脚本吧, 正则抓取计算式子, 再eval一下, 控制一下时间就好

C7cktO.png

1567958681980

可以看看官方wp:calculate/Writeup.md

susctf baby xss

1567959489814

讲道理, 无法访问好吧, 总结一下学到的东西即可:

payload**

ref: babyxss_wpMarkdown中的XSS

护网杯 easy_tornado 1

题目镜像:https://buuoj.cn/challenges#easy_tornado

题面如下:

1567585719589

结合下图中的hint, 它告诉了我们filehash的生成方式, 那么咱们目的显然是/fllllllllllllag, 下一步是要获取cookie_secret, 再结合render(渲染)以及回显, 确定是模板注入

1567585893116

模板注入

和常见Web注入(SQL注入等)的成因一样,也是服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。(web安全中的真理:永远不要相信用户的输入)
————————————————
版权声明:本文为CSDN博主「钞sir」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40827990/article/details/82940894

既然是模板注入, 那要回显哪一个信息呢, 在复现时的整个逻辑关系显得尤为重要. 结合关键字 cookie_secret和题目名, google搜索之: 锁定是tornado的模板, 在此处阅读tornado的源码, 看到auth.py, 再结合下面两篇, 粗略确定最终的payload的格式

  1. tornado.web — RequestHandler and Application classes — Tornado 6.1.dev1 documentation
  2. Tornado小记 — 模板中的Handler
1567586431274

最终利用cookie_secretflag的文件名生成出filehash, 完成.

总结: 是我第一次遇到模板注入的利用方式, 一开始还以为是xss, 但事后来看, 从刚刚引述模板注入的定义里, 也能看出来这条法则: input is invalid

ref:

  1. [2018护网杯-web部分题解](https://www.anquanke.com/post/id/161849)
  2. [护网杯-easy_tornado](https://blog.csdn.net/wyj_1216/article/details/83043627)

XCTF 4th-SCTF-2018 Zhuanxv

你只是在扫描目标端口的时候发现了一个开放的web服务

1568036425145

爆路径爆出来一个, /list

1568036625810

自动跳转到了/zhuanxvlogin

发现url的链接不对劲, 但是手工测试了一波没发现啥, 也就没有深入…

参考这篇文章SCTF 2018 Writeup — De1ta – 先知社区, 新得两个思路, 一是其他端口信息, 而是github搜一波

在80端口发现了nginx的初始页面, 得知nginx/1.14.0 (Ubuntu)

任意文件下载

观察到登录页的背景图片里有参数, 一测试, 发现是任意文件下载, 开冲

读取spring框架的配置文件/WEB-INF/web.xml

为了有层次地了解更多信息, 一般是先读 /WEB-INF/web.xml, 再读/WEB-INF/classes/Struts.xml, 最后读/WEB-INF/classes/applicationContext.xml

1568202924792

可以看到flag存储的表名和列名,

读取源码

在刚刚的applicationContext.xml中可以看到这两个类,

使用jd-gui反编译.class得到源码 省略导包的部分直接进主函数, 如下

下一步就是构造盲注并用其得出密码, 最后用or筛选出flag得出

总结

  1. HQL注入除了万能密码、知道表名列名的情况下进行盲注

  2. Spring框架下常用的配置文件. 此处是github上的样例, 可以参考着读明白配置文件

ref: Hibernate框架中的HQL注入漏洞 – Exploit的小站~ – CSDN博客

Hibernate HQL注入攻击入门 – FreeBuf互联网安全新媒体平台

h3xStream’s blog: HQL for pentesters

https://github.com/Hecbi/sctf2018-zhuanxv

SCTF2018-WP – Venenof7’s Blog

XCTF 4th-CyberEarth ics-07

[HCTF 2018]WarmUp 1

php+HTML
FILE);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
//①page必须是字符
//注意:当入参是page=时, 值为null
if (! isset(page) || !is_string(page)) {
echo "you can't see it";
return false;
}
//②'page必须在白名单[source,hint]中
if (in_array(
page, whitelist)) {
return true; //1,无法满足, 因为想包含flag文件
}
//截取?之前的部分
_page = mb_substr(
page,
0,
mb_strpos(
page . '?', '?')
);
//②"_page必须在白名单中
if (in_array(
_page, $whitelist)) {
return true; //2,可以满足, 将hint?或者source放在前面即可
}

?>

RCTF-2015-upload

XCTF 4th-CyberEarth ics-04

工控云管理系统新添加的登录和注册页面存在漏洞,请找出flag。
找到忘记密码界面,丢到bp里爆用户名,得到俩很可疑的账号

  • 'or''='
  • admin'or''='

    (admin是我刚刚注册的)
    很明显是注入了, 看看有没有注入导致的万能密码. 加入bp爆一下密码,全部失败.
    找了下wp, 结果是在忘记密码输入用户名的界面存在sqli注入. gg

XCTF 4th-CyberEarth ics-05

csaw-ctf-2016-quals-wtf.sh-150

RCTF-2015 bug

原本是想改cookie绕过, 可是加密方式不知道. 最后还是重置密码那里进去抓包改的admin密码.
改xff为127, 进去看到注释/index.php?module=filemanage&do=???,跟进发现这么一句

php+HTML

<script type="text/javascript">
document.getElementById('cur').className = "cur";
</script>

<pre><code class="line-numbers"><br />filename怀疑是lfi或者命令注入, bp走一走, 这期间看了一下服务器环境, 待会儿有用:

<pre><code class="language-php line-numbers">Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.26

</code></pre>

看了下writeup, 原来是要进到upload上传界面(唉, 本菜思路不够活跃想不到).
上传的话, 测试了一下, 有以下反映:

<ul>
<li>上传了其他类型的文件(如jpg文件等) | You know what I want!</li>
<li>后缀或内容被waf拦截 | Something shows it is a php!</li>
<li>是php5后缀但内容里没有php木马 | It is not a really php file</li>
</ul>

那么步骤就清楚了, 如何它绕过php的识别, 上传php木马, 限制如下:

<ol>
<li>要检测上传内容是否有php代码(并非简单检测文件头的幻数), 经过测试, 只要文件中含有<code><?php xxxx ?></code>语句, 就会被拦截,.</li>
<li>要检测Content-Type, 不能上传裸php文件</li>
<li>后缀方面, php5可绕过</li>
</ol>

最后, 用php的另一种写法绕过, 这也是php的两种常规写法之一(另外一种 <?php xxx ?>已被拦截,) 可参考 https://www.php.net/manual/zh/language.basic-syntax.phpmode.php

对了, 从PHP7开始,这种写法<code><script language="php"> </script></code>,已经不支持了
<strong>payload</strong>

`php+HTML
文件名改php5

perl use strict; use warnings; use CGI;

my cgi= CGI->new; if (cgi->upload( ‘file’ ) ) { my file=cgi->param( ‘file’ ); while ( <$file> ) { print “_”; } }

/cgi-bin/file.pl?/etc/passwd

/cgi-bin/file.pl?/bin/bash%20-c%20ls{IFS}/|

img

最后读取flag文件,拿到flag.

img

ref:i-got-id-200

Tasks :: CyBRICS CTF 2019

Bitkoff Bank (Web, Easy, 50 pts)

挖矿,页面里有个js脚本,每隔一秒刷新一次

1563680669703

ref:https://cybrics.net/tasks/bitkoff

ref:https://cybrics.net/tasks/caesaref

首页      WEB安全      刷CTF的WriteUp [持续更新]

发表评论

textsms
account_circle
email

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Unc1e

刷CTF的WriteUp [持续更新]
随缘写、随缘更新,多写有意义的 题目复现 SCTF2020:CloudDisk 第二次解题: 构造出: [crayon-5fbff7aa409ee193701594/] 找flag找了半天,试了各种/flag, /flag.txt ,都不行,完…
扫描二维码继续阅读
2019-07-11
%d 博主赞过: