红日安全团队
1.签到题
2.虚幻
题目提示汉信码。使用binwalk提取出9张图,拼接成如下
用stegsolve取R7保存并取反色
补上汉信码的4个角,扫描即可获得flag
3. Calc
正则表达式明显有问题,然后结合python沙箱逃逸读取flag文件。
4. unfinished
Register.php页面的username处存在二次注入。
过滤了逗号等字符,尝试绕过。用两次hex编码读出数据
ll
将所有读出的数据拼接并解码:
5. wafUpload
Fuzz测试,filename使用数组绕过
成功上传webshell后连接即可获取flag。Flag在/flag中
6. Sqlweb
Fuzz探测过滤字符如下:
爆破admin/admin123登陆发现提示
猜测应该是wuyanzu 用户登陆可以看见flag。
利用uname处的注入,注出wuyanzu 用户密码。密码就是flag
慢慢爆破,拼起来就是flag。
7.套娃
Lsb隐写,bgr通道
8. martricks
64位ida打开 查找字符串
双击进入数据段
跟进代码段
查看伪代码
感觉可以fuzz
代码如下
angr 爆破
即可获得flag
9.Easyfmt
直接将用户输入作为printf的参数,导致格式化字符串漏洞
输入aaaa作为测试
经测试偏移为6
思路如下:
利用格式化字符串漏洞,泄露puts函数地址,并计算system的地址,没有给libc,所以通过在线网站得到puts与libc的相对偏移
1.利用格式化字符串,将system地址写入got表中printf函数的地址
在次输入’/bin/sh’,得到shell
Exp:
10. fgo
del_servant函数free chunk后没有将指针置空,导致存在uaf或double free
Add_servant函数在我们生成chunk前会自己生成一个size为0x10的chunk,这个chunk存在一个如下的结构体
print_servant_content函数
程序中还存在一个函数,调用便可以直接拿到shell
总体思路就是用secret函数地址覆盖结构体中的指针print_servant_content。
步骤:
1.先申请三个srvant,大小只要不是0x10就行
2.Delete序号0,delete序号1,此时的fastbin链表结构
Size为0x8的就是结构体所在的chunk
3.在申请一个size为0x8的servant,content内容为secret的地址,程序会先将0x8eaa050这个chunk存储结构体,0x8eaa008这个chunk作为内容,但是0x8eaa008是序号0存储结构体的chunk,secret会覆盖掉它的*print_servant_content,再次打印chunk0,便会执行这个函数
脚本:
11.神奇二叉树
把 1-59的字符根据tmpflag给的几个值挑出来,然后第三部有个红黑树的节点删除操作,操作后会确定每个节点的颜色属性。然后第四部将红色的 ASCII +1,黑色 ASCII-1 即可获得flag。
整理:红日安全
原文始发于微信公众号(白帽子程序员):【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论