[BUGKU][CTF][Reverse][2020] Reverse writeup 1-7 暂时肝不动了
Reverse 入門逆向
步驟: ida main函數(shù) 按R
Reverse signin
關(guān)鍵字:
知識點:Android逆向分析。(常用工具:安卓模擬器、JEB、Cyberchef、Androidkiller)
步驟:
1.用jeb打開,找到MainActivity,右鍵解析成java分析 ,需要反轉(zhuǎn)后tostring()
2. 用jeb打開,找到MainActivity,右鍵解析成java分析
3.在線或者使用腳本反轉(zhuǎn) ,base64解碼
參考鏈接:https://www.cnblogs.com/myqzs/p/13724482.html
Reverse EASY re
關(guān)鍵字:ida
步驟:
1.main f5 F5翻譯為偽C代碼
2.strcmp()對面輸入的值是否等于xmmword_413E34位置的值,雙擊xmmword_413E34 跟過去,發(fā)現(xiàn)了flag (按R顯示字符串)
3.字符串拼接后反轉(zhuǎn) ,得到flag
DUTCTF{We1c0met0DUTCTF}
思路二:解壓得到一個可執(zhí)行文件,然后用Notepad++打開,直接搜索DUTCTF即可得到
Reverse Easy_vb
關(guān)鍵字:ida
步驟:
ida 打開 往下翻 MCTF 替換 flag
Reverse Timer(阿里CTF)
關(guān)鍵字:
知識點:
步驟:
1.下載文件發(fā)現(xiàn)是apk ,先安裝運行下發(fā)現(xiàn)有一個倒計時,只是時間為200000秒。猜測是讓時間走完獲取flag。
2.JEB查看
package net.bluelotus.tomorrow.easyandroid;import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView;public class MainActivity extends AppCompatActivity {int beg = (((int) (System.currentTimeMillis() / 1000)) + 200000);int k = 0;int now;long t = 0;public native String stringFromJNI2(int i);public static boolean is2(int n) {if (n <= 3) {if (n > 1) {return true;}return false;} else if (n % 2 == 0 || n % 3 == 0) {return false;} else {int i = 5;while (i * i <= n) {if (n % i == 0 || n % (i + 2) == 0) {return false;}i += 6;}return true;}}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView((int) R.layout.activity_main);final TextView tv1 = (TextView) findViewById(R.id.textView2);final TextView tv2 = (TextView) findViewById(R.id.textView3);final Handler handler = new Handler();handler.postDelayed(new Runnable() {public void run() {MainActivity.this.t = System.currentTimeMillis();MainActivity.this.now = (int) (MainActivity.this.t / 1000);MainActivity.this.t = 1500 - (MainActivity.this.t % 1000);tv2.setText("AliCTF");if (MainActivity.this.beg - MainActivity.this.now <= 0) {tv1.setText("The flag is:");tv2.setText("alictf{" + MainActivity.this.stringFromJNI2(MainActivity.this.k) + "}");}MainActivity mainActivity;if (MainActivity.is2(MainActivity.this.beg - MainActivity.this.now)) {mainActivity = MainActivity.this;mainActivity.k += 100;} else {mainActivity = MainActivity.this;mainActivity.k--;}tv1.setText("Time Remaining(s):" + (MainActivity.this.beg - MainActivity.this.now));handler.postDelayed(this, MainActivity.this.t);}}, 0);}public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);return true;}public boolean onOptionsItemSelected(MenuItem item) {if (item.getItemId() == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}static {System.loadLibrary("lhm");} }
直接照著寫一個即可,然后可以算出關(guān)鍵變量k
解密腳本,算出k = 1616384
3. 實現(xiàn)的話,用Androidkiller打開項目,因為跳轉(zhuǎn)后輸出了The flag is,所以搜索該字符串,雙擊跟過去
3.1 第113行的if-gtz v0, :cond_0。 if-ltz是如果大于0跳轉(zhuǎn) ,那改成如果小于0跳轉(zhuǎn)就跳過了200000秒等待了。對應(yīng)的語句為if-ltz v0, :cond_0。
3.2 然后要找到賦值k的位置,看第129行-149行,因為k的值是在alictf{和}之間傳入的。
看到了139行的的iget v3, v3, Lnet/bluelotus/tomorrow/easyandroid/MainActivity;->k:I,知道v3是k的值。
于是在下面賦值const v3,1616384
然后保存,編譯,安裝運行就出現(xiàn)flag。(jdk=1.8 apktool>=2.3)
Reverse 逆向入門
關(guān)鍵字:winhex
步驟:
1.winhex 打開 復(fù)制黏貼到瀏覽器
2.QR掃描出結(jié)果
Reverse 游戲過關(guān)
關(guān)鍵字:ida
步驟:
1.首先就是看運行遍程序,了解下程序流程以及關(guān)鍵字符串。然后打開ida
Shift+F12查看下字符串,然后雙擊過去
2.按Cirt+X交叉引用顯示調(diào)用位置
3.F5看下偽代碼,兩個數(shù)組按位異或再和0x13異或生成flag
Reverse
關(guān)鍵字:
知識點:
步驟:
Reverse
關(guān)鍵字:
知識點:
步驟:
Reverse
關(guān)鍵字:
知識點:
步驟:
Reverse
關(guān)鍵字:
知識點:
步驟:
Reverse
關(guān)鍵字:
知識點:
步驟:
Reverse
關(guān)鍵字:
知識點:
步驟:
參考鏈接:
https://www.codeqq.com/log/7Zjb2O7Z.html
https://blog.csdn.net/ahilll/article/details/84787700
總結(jié)
以上是生活随笔為你收集整理的[BUGKU][CTF][Reverse][2020] Reverse writeup 1-7 暂时肝不动了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: common-collections中J
- 下一篇: keeplive安装部署