2020網鼎杯白虎組re 惡龍 wp


此次參加網鼎杯白虎組,雖然被虐的很慘,但仍然收獲頗多,對於惡龍一題,作為逆向入門題目,還是非常不錯的,記錄一下。

題目鏈接: https://pan.baidu.com/s/1Qsgyu1dUzJTymm5yTKQ9SQ 提取碼: 1djs 

首先在linux子系統中使用file hero 命令查看文件信息

hero: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5d43a21f3afe482b78a41a29648a070d01c0c2d9, not stripped

確定是一個64位的執行程序。那么先使用ida簡單分析下。

 

 

 通過執行程序和分析逆向偽代碼,基本上確定程序是一個小游戲,給出三個選項。1是打小怪賺取金幣,2是打boss,3是去商店使用金幣兌換戰斗力。

 

從打BOSS的邏輯看出來,有3個BOSS,每一個的戰斗力分別有1000000,3000000,5000000 ,題目提示不能patch,也就是不能修改怪的戰斗力值,估計跟最后的flag有關。那么只能通過修改elf來完成。

 

 

 

 

 切換到匯編,分別在0x4015f9、0x40165c、0x4016bc處下斷點。程序運行到那里修改eax的值即可。

 

祭出gdb  gdb hero

b *0x4015f9
b *0x40165c
b *0x4016bc

按r執行程序。

 

 

 選擇2

 

 

 

斷點生效后,輸入

set $eax=0xf4244
c

為什么是0xf4244?反正比0xf4240要大就可以了。

 

 第一頭惡龍被打敗了,那么繼續打第二頭。

 

 第二頭打敗了,提示解密另一部分flag,打第三頭

 

 flag出來啦!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM