Hackergame 2020
0x01 签到
这一题很容易发现要提取整数个flag他才会给你flag,但是题目中是调不到整数个的,但是我们观察url就可以发现解题方法。
直接把number=1,2,3等整数就行。超过一万就给不起了
0x02 猫咪问答
第一个问题,,百度百度 必应必应 谷歌谷歌。
第二个问,,也是百度百度。
第三个问,去科大官网看看以前发的推送就能看到了。
第四问,百度地图实景查看,,(或者找科大的同学呀)
第五问,同第三问。
0x03 2048
这题直接看源代码。
继续往下看。
如果赢了,就把url加上getflxg那一串,后面=‘b’+’a’+ +’a’+’a’很容易猜到就是banana啊。
所以直接拿到flag。
0x04 一闪而过的flag
这个嘛,就直接把文件下载下来,放到cmd里面运行就行了。(不会真的有人截图的把)
0x05 从零开始的记账工具人
暴力破解,别问花了多久,问就是5个小时。
0x06 超简单的世界模拟器
百度一下生命游戏先。看到一个图案叫轻量级飞船,没2个回合向右边走一个周期,所以直接把飞船用在题目里就拿到第一个flag了,,第二个没写出来。
0x07 生活在博弈树上
始终热爱大地!!!
首先嘛,先checksec一下看看。
显示有canary,还开了nx。一开始我就不知道有canary怎么做,后来知道canary是假的,调试一下就发现了 。随后再把丢到ida里面看看。反编译看看main函数的伪代码,发现关键点。然后有一个gets危险函数把字符写到v12哪里,然后看ida算出偏移量为0x89。
只要把v15覆盖为1就能得到flag。。不过再覆盖的时候一定注意先跑完前面的if的条件不然程序出不来。。。
所以脚本就是:
1 | form pwn import* |
升上天空!!
第二题的话肯定就是要获得shell了。我当时第一思路就是系统调用,exevce(‘/bin/sh’,NULL,NULL)就能拿到shell。用ROPgadget找一找gadget。
没有/bin/sh而且亲测/sh也都用不了。。所以我们要自己把/bin/sh写入bss段上去,调用gets函数。
在ida中找到gets函数的地址,然后继续寻找需要的gadget。
在找一段bss上的地址就行了。在ida上随便找一下,bss_addr=0x00000000004A9A01。
之后就能构造payload了。这里要把程序跑通的话还需要把棋下输或者像第一题一样覆盖掉,我这里用1全部填充接直接过了检测了。
1 | from pwn import* |
所以脚本就是这样的了,就能得到shell,拿到flag。