BugKuCTF 一段base64 各步骤详解 适合初学者

预备知识补充(不想看的话直接看下面解题步骤):

1.

escape采用ISO Latin字符集对指定的字符串进行编码。

所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。

使用escape、unescape

<script>

var str="Need tips? Visit RUNOOB!";

var str_esc=escape(str);

document.write(str_esc + "<br>")

document.write(unescape(str_esc))

</script>

会出现:

Need%20tips%3F%20Visit%20RUNOOB%21

Need tips? Visit RUNOOB!

下面的补充一个解释,东西在:https://www.yuque.com/xiaomo-r8dpk/skbi22/kr0fre?language=zh-cn


一,简单加密解密

escape()和unescape()

二:转义字符"\"的妙用

     "\"后面还可以跟八进制或十六进制的数字,如字符"a"则可以表示为:"\141"或"\x61"(注意是小写字符"x"),至于双字节字符如汉字"黑"则仅能用十六进制表示为"\u9ED1"(注意是小写字符"u"),其中字符"u"表示是双字节字符,根据这个原理例子代码则可以表示为:

1,八进制转义字符串如下

<script LANGUAGE="JavaScript"> 

eval("\141\154\145\162\164\50\42\u9ED1\u5BA2\u9632\u7EBF\42\51\73") 

</script>

2,十六进制转义字符串如下:

<SCRIPT LANGUAGE="JavaScript"> 

eval("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B") 

</SCRIPT>

这次没有了解码函数,因为JavaScript执行时会自行转换,同样解码也是很简单如下:

<SCRIPT LANGUAGE="JavaScript"> 

alert("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B") 

</SCRIPT>

 

意思是unescape()可转"\141""\x61""\u9ED1"

 

2.

一般x数字  x数字 表示16进制

 

3.

JavaScript fromCharCode() 方法

 

 

4.

Html对于Puny Code的编码方式如下,以"繁"字举例,

繁  —> &#32321;

 主要格式是 "&#" + 一个十进制数 + ";",而这个十进制数正是汉字"繁"的中文内码。"32321"转换为十六进制是"7E41",通过查Unicode表可知,"7E41"正对应着汉字"繁"

 

 


解题步骤:

1.base64 to text

 

结果是一堆8进制ascii码,

隔几个就有一对\134\170就是\x

结合第二部图片可以看出来

八进制

ascii

\134

\

\170

x

\65

5

\143

c

八进制

ascii

\134

\

\170

x

\67

7

\65

5

2.unescape

若8转10进制,结果没有分割符了,不知道下面该怎么办

 

照大家的方法unescape

unescape()可转"\141""\x61""\u9ED1"三类型

 

 

3.明显的十六进制hex to text

 

 

4.unescape

unescape()可转"\141""\x61""\u9ED1"三类型

 

5.dec to text

看起来是127以内十进制ascii

String.fromCharCode是js中的函数,括号中是参数

复制输出到输入,只保留参数部分

 

6.decode html

在这部分:

形如

&name;

&#dddd;即&#数字

&#xhhhh;即&#x数字

的一串字符是 HTML、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是「编码」。以 HTML 为例,这三种转义序列都称作 character reference:第一种是 character entity reference,后接预先定义的 entity(实体) 名称,而 entity 声明了自身指代的字符。

后两种是 numeric character reference(NCR),数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。

 

7.decode html

 

8.unescape

 

获得flag

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ahuuua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值