刷CTF的WriteUp [持续更新]

typora-root-url: WEB安全\dvwa_list

TODO

  • [ ] web/JS逆向
    • [ ] https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=1&id=4810
      ref: https://st98.github.io/diary/posts/2017-10-25-hacklu-ctf-2017.html

题目复现

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
<?php
highlight_file(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走一走, 这期间看了一下服务器环境, 待会儿有用:

php
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.26

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

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

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

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

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

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

php+HTML
文件名改php5
<script language="php">phpinfo()</script>

<pre><code class="line-numbers"><br />### csaw-ctf-2016-quals i-got-id-200

perl的代码审计, 主要是命令注入, 给我看蒙了, 贴一段dalao的wp

> 打开题目发现有三个连接。file是上传,猜测存在上传漏洞,之后是参考大佬的WP,贴过来。
>
> 其中点击Files会跳转到/cgi-bin/file.pl文件中进行执行。这里可以上传任何一个文件,然后会在下方打印出内容。那么我们猜测后台逻辑大概是这样的。

</code></pre>

perl use strict; use warnings; use CGI;

my $cgi= CGI->new; if ( $cgi->upload( 'file' ) ) { my $file= $cgi->param( 'file' ); while ( <$file> ) { print "$_"; } }

<pre><code class="line-numbers"><br />> 那么,这里就存在一个可以利用的地方,param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的file变量中。而对于下面的读文件逻辑来说,如果我们传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。这样,我们的利用方法就出现了:在正常的上传文件前面加上一个文件上传项ARGV,然后在URL中传入文件路径参数,这样就可以读取任意文件了。

</code></pre>

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

<pre><code class="line-numbers"><br />> 将参数写成这个,读取到了系统的文件。/etc/passwd是用来存储登陆用户信息的,

[![img](https://github.com/gwyxjtu/my_CTF_diary/raw/a6f7260b54bd01682a2f1649b4eaabdb7d5dede6/%E6%94%BB%E9%98%B2%E4%B8%96%E7%95%8C%E9%A2%98%E7%9B%AE/img/14.png)](https://github.com/gwyxjtu/my_CTF_diary/blob/a6f7260b54bd01682a2f1649b4eaabdb7d5dede6/攻防世界题目/img/14.png)

> 这里再次使用bash来读取文件目录。payload:

</code></pre>

/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

作者: Henry

Learn to share and enjoy life, that's why I am here

发表评论

电子邮件地址不会被公开。 必填项已用*标注

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