近期CTF相关总结

记录下最近CTF题目中的相关技术,CTF比赛越来越多了。

HCTF2016

injection (xpath injection)

xpath注入题目,源码之后得到是这样的:

xpath语法:http://www.w3school.com.cn/xpath/xpath_syntax.asp
xpath注入:http://blog.csdn.net/yefan2222/article/details/7227932

关键在于:

于是有了以下payload,显示出所有的节点:

可以看做执行了以下查询,即可注入成功:

Hack my net (SSRF)

根据题目可能会想到去内网,测试SSRF。首先,访问得到两个信息:

想办法访问得到:http://localareanet/all.conf中的数据。
参考这篇SSRF的绕过技巧:http://www.wooyun.org/bugs/wooyun-2015-099135

先测试是否可以访问指定ip:

可以得到css文件:

且有访问记录:

这时,使用php进行代理转发,试试。

编写php进行转发请求

这是关键思路,因为如果Content-Type不是text/css,会报501错误。测试可以:

访问:?u=http://nohackair.net:80@121.42.175.111:8080/1.php,然后进行内网访问。于是修改为:

成功获取信息:

SCTF2016

Homework

  • 存在LFI
  • 存在文件上传点,但是经过了imagecreatefrom***函数重写图片文件。

但是gif图片处理后,有的部分是不变的。
http://www.freebuf.com/articles/web/54086.html

于是可以上传图片,然后包含图片即可作为shell。

  • 有个坑:

flag不在db中,可以读取文件源码。
服务器禁用掉了phpinfo等大量函数。遍历目录最终找到了php的glob函数。payload如下:

总结:

  1. 处理过后的图片,会有部分没有改变的部分。
  2. LFI 包含 图片,形成一个shell
  3. shell限制了太多功能,最后找到glob函数进行遍历目录。。。。。。

参考链接:

http://php.net/manual/en/function.glob.php
http://drops.wooyun.org/tips/3978

http://www.freebuf.com/articles/web/54086.html
https://www.secgeek.net/bookfresh-vulnerability/

sycshell

这题过后看了看,有些技术记录下:

http://58.213.63.27:61180/

  • 修改host,访问:

查看源码得到如下:

修改hosts:

访问: http://sycshell.sycsec.com:61180/

  • jother编码解密

查看源码可以看到有jother加密的js代码,网上找工具:

解密得到:

访问:http://sycshell.sycsec.com:61180/W0Ca1N1CaiBuDa0/read.php?f=index

得到源码:

  • 代码审计,绕过限制

绕过方法值得学习:

参考链接:

查看phpinfo,发现有waf.php:

读取waf.php 文件内容:

  • phpinfo + lfi 上传shell

这部分之后,详细看一看,总结下。

0429 CTF

web1

  • 通过cookie加密,需要破解这个加密,使uid为6.

限制:

  • 注册的用户名和密码只允许三位数以上。

破解思路为:

http://www.freebuf.com/news/special/56506.html

步骤:

代码为:

全部python程序为:

运行python anheng_web1.py 0 100得到:

web2

  • 存在order by注入攻击漏洞

将数据库数据导入文件:

注意:

  • upload目录才可写。
  • 拼接payload

参考学习order by注入:
http://www.jinglingshu.org/?p=10105
http://joychou.org/index.php/web/SQL-Injections-in-MySQL-LIMIT-clause.html

web3

php session注入,参考:

PHP Session 序列化及反序列化处理器设置使用不当带来的安全隐患

https://bugs.php.net/bug.php?id=71101

http://php.net/manual/zh/session.upload-progress.php

构造反序列化对象为:

  • 构造的上传html文件为:

  • 改变其PHP_SESSION_UPLOAD_PROGRESS属性,如下:

  • 注意加上|注入。

  • 先提交到phpinfo.php,还要访问以下index.php才能得到结果:

  • 每次攻击,要重新生成序列化数据,因为字符串长度不一样。

执行代码长度需要改变:s:23:"echo system('ls /var');"与前面测试的s:21:"echo system('ls ./');"不一样。 21变成了23。

  • 最后payload: