buuctf,luck_guy

核心函数get_flag()

 buuctf,luck_guy

 switch里面的代码仔细看一下,case4才生成f2字符串,然后case5对字符串进行了一些变换,由case1进行拼接并输出,在case1里面的f1字符串已经能看见部分flag,GXY{do_not_

这个for循环会执行5次,只要改变rand函数的返回值ret,让ret与mod200分别等于4,5,1,程序就会自己把flag吐出来。

buuctf,luck_guy

 猜测call rand后返回值存在了eax里。

在rand处设置断点,启动ida调试,remote linux debugger

linux虚拟机那边会要求输入数字,经分析必须偶数

buuctf,luck_guy

 此时程序会断在设置的rand断点处

buuctf,luck_guy

 f8单步一下,能发现eax的值变了,直接右键-修为4,f9进入下一轮,修改为5,f9下一轮,修改为1,最后两轮不用修改,程序结束后linux虚拟机那边就能看到结果了。

buuctf,luck_guy

 buuctf,luck_guy

 

上一篇:sql server 函数--rand() 生成整数的随机数


下一篇:MySQL如何随机查询表中的几行记录