De1CTF_2020_wp_re_parser

0x00 前言

先膜一下小組裏的大師傅們,tql。

出題的師傅感覺也好nb。

先寫re的其中的 parser .

0x01 parser

  這是一個用c++寫的解釋器,在動調的時候,很難看,後來看NuLL的wp說“⽤了⼀種新的動態綁定⽅式”。回頭看看

先放到ida裏看一眼,找到輸入輸入位置:

輸入後加上“\n”,進行tokenize,進入sub_35F0:

很簡單可以看出  ‘\n’ --->9  ‘+’ --->5  ‘_’ --->6  ‘{’ --->2  ‘}’ --->3  ‘De1CTF’ --->1  其他 --->4 (每個都如上所示)

並且可以看出是遞歸下降分析法這一編譯原理

https://blog.csdn.net/starter_____/article/details/89857531原理圖如下:

這樣我們就去看每個符號的加密:

1. ”+“ -->5

這個在sub_4E70的位置

跟一下sub_6E8B:

這塊是AEShttps://blog.csdn.net/tianxiawuzhei/article/details/43051839

2. ‘_’ --->6

順着上面的sub_507E走,可以找到 ”_“

同理找出對應的加密:des

3.字符串:

這塊是判斷flag格式是否是De1CTF{xxxx}的,跟進sub_7349,再進入sub_75A2

發現對於字符串的加密是RC4 

https://bbs.pediy.com/thread-256733.htm

4.順序

我們需要來猜一下遞歸的順序:

再調試的時候發現

aes的密鑰是 De1CTF0A0A0A...(10個0A)

des的密鑰是De1CTF\x02\x02

rc4的密鑰是De1CTF

這明顯有padding,所以最後一次加密是aes

0B827A9E002E076DE2D84CACB123BC1EB08EBEC1A454E0F550C65D37C58C7DAF2D4827342D3B13D9730F25C17689198B

10101010101010101010101010101010

以padding爲突破口,通過反覆猜測

最後是這樣的順序:

得到flag: De1CTF{h3ll0+w0rld_l3x3r+4nd_p4r53r}

0x02 總結

解釋器的題熟悉了一下(遞歸下降分析法),這幾種加密可以再熟悉一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章