2021-12-1
helloword
有難的題目,也就有簡單的題目,就像程序員一輩子編寫的第一個(gè)程序,極有可能是helloword,它很普通,但是也很讓人懷念。你猜這題flag在哪里?讓我們懷念第一次編寫的easy程序吧!
下載附件是一個(gè)apk為后綴名的文件
APK(全稱:Android applicationpackage)是Android操作系統(tǒng)使用的一種應(yīng)用程序包文件格式。簡單的說就是安卓手機(jī)的應(yīng)用程序文件,我們平常用的使用如微信、獵豹瀏覽器等等app應(yīng)用程序就是apk文件格式。一個(gè)Android應(yīng)用程序的代碼想要在Android設(shè)備上運(yùn)行,必須先進(jìn)行編譯,然后被打包成為一個(gè)被Android系統(tǒng)所能識(shí)別的文件才可以被運(yùn)行,而這種能被Android系統(tǒng)識(shí)別并運(yùn)行的文件格式便是“APK”。
其實(shí)跟壓縮包差不多,WinRAR就可以解壓,得到
用IDA打開后綴名為dex的文件
打開之后發(fā)現(xiàn)函數(shù)特別多
用快捷鍵shift+F12按字符串查找
結(jié)果直接找到了flag
提交flag{7631a988259a00816deda84afb29430a}顯示正確
reverse3
用32位的IDA打開,然后shift+F12
點(diǎn)擊right flag!\n進(jìn)入
找到主函數(shù)代碼
然后是讀程序,這個(gè)技能待提高啊,我看了好長時(shí)間才明白這是在干啥
發(fā)現(xiàn)對輸入字符先進(jìn)性了一個(gè)加密函數(shù)
然后經(jīng)過了一個(gè)for循環(huán)變換
最后和str2比較
找到對輸入字符進(jìn)行加密的函數(shù)
我還是沒看懂,搜了其他解題,說這是base加密的函數(shù)?﹏?
解題的話,先看經(jīng)過base加密和for循環(huán)需要得到的str2
也就是e3nifIH9b_C@n@dH(shift+E快捷鍵提取)
然后進(jìn)行for的逆運(yùn)算
str="e3nifIH9b_C@n@dH" m=""for i in range(len(str)):m+=chr(ord(str[i])-i)print(m)得到:e2lfbDB2ZV95b3V9
然后base64解密
import base64 m="e2lfbDB2ZV95b3V9" print(base64.b64decode(m))運(yùn)行得到b'{i_l0ve_you}'
提交flag{i_l0ve_you}顯示正確
不一樣的flag
是不是做習(xí)慣了常規(guī)的逆向題目?試試這道題,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一個(gè)’字符串‘,考驗(yàn)眼力的時(shí)候到了! 注意:得到的 flag 請包上 flag{} 提交
IDA打開,然后找main,找flag
反正肯定跟初始的*11110100001010000101111#有關(guān),就是要看中途怎么變換了
讀程序,給出you can choose one action to execute
有四個(gè)選項(xiàng),分別是up down left right(上下左右)
我說怎么F5出不來代碼啊,該是32位的,我開的64位。
看代碼,并努力給個(gè)注釋
這種上下左右的,俗稱迷宮游戲
解題關(guān)鍵顯然在最后的判斷
通過最后幾行代碼判斷這是5?45*45?4的迷宮,將前面發(fā)現(xiàn)的初始字符串按5?45*45?4排列,也就是
*1111 01000 01010 00010 1111#繼續(xù)分析
也就是需要從?*?走到#,中途不能出現(xiàn)1,(走0不走1)
也就是需要:下下下右右上上右右下下下
換成程序里要求的1234就是:222441144222
提交flag{222441144222}顯示正確
總結(jié)
- 上一篇: 2021-11-30
- 下一篇: 2021-12-27