【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

admin 2022年6月17日11:03:05CTF专场评论10 views1354字阅读4分30秒阅读模式
文章由红日安全ctf小组编写,文章首发:https://xz.aliyun.com/t/2619
【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp
【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

dvdf


红日安全团队


1.签到题

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

2.虚幻


题目提示汉信码。使用binwalk提取出9张图,拼接成如下

用stegsolve取R7保存并取反色

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp


补上汉信码的4个角,扫描即可获得flag

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp


3. Calc

正则表达式明显有问题,然后结合python沙箱逃逸读取flag文件。

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

4. unfinished

Register.php页面的username处存在二次注入。

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp


【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

过滤了逗号等字符,尝试绕过。用两次hex编码读出数据

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUpll【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

将所有读出的数据拼接并解码:

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

5. wafUpload

Fuzz测试,filename使用数组绕过

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

成功上传webshell后连接即可获取flag。Flag在/flag中


6. Sqlweb

Fuzz探测过滤字符如下:

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

爆破admin/admin123登陆发现提示

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

猜测应该是wuyanzu 用户登陆可以看见flag。

利用uname处的注入,注出wuyanzu 用户密码。密码就是flag

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

慢慢爆破,拼起来就是flag。


7.套娃

Lsb隐写,bgr通道


【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

8. martricks


64位ida打开 查找字符串

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

双击进入数据段

跟进代码段

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

查看伪代码

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp


感觉可以fuzz

代码如下

angr 爆破

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

即可获得flag



9.Easyfmt


【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp


直接将用户输入作为printf的参数,导致格式化字符串漏洞


输入aaaa作为测试

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp


经测试偏移为6


思路如下:

利用格式化字符串漏洞,泄露puts函数地址,并计算system的地址,没有给libc,所以通过在线网站得到puts与libc的相对偏移

1.利用格式化字符串,将system地址写入got表中printf函数的地址

在次输入’/bin/sh’,得到shell



Exp:

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp



10. fgo


del_servant函数free chunk后没有将指针置空,导致存在uaf或double free

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

Add_servant函数在我们生成chunk前会自己生成一个size为0x10的chunk,这个chunk存在一个如下的结构体



【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp



print_servant_content函数

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

程序中还存在一个函数,调用便可以直接拿到shell


总体思路就是用secret函数地址覆盖结构体中的指针print_servant_content。


步骤:

1.先申请三个srvant,大小只要不是0x10就行

2.Delete序号0,delete序号1,此时的fastbin链表结构

【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

Size为0x8的就是结构体所在的chunk

3.在申请一个size为0x8的servant,content内容为secret的地址,程序会先将0x8eaa050这个chunk存储结构体,0x8eaa008这个chunk作为内容,但是0x8eaa008是序号0存储结构体的chunk,secret会覆盖掉它的*print_servant_content,再次打印chunk0,便会执行这个函数


脚本:


【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp



11.神奇二叉树


把 1-59的字符根据tmpflag给的几个值挑出来,然后第三部有个红黑树的节点删除操作,操作后会确定每个节点的颜色属性。然后第四部将红色的 ASCII +1,黑色 ASCII-1 即可获得flag。




整理:红日安全


原文始发于微信公众号(白帽子程序员):【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月17日11:03:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【2018年 网鼎杯CTF 第二场】红日安全-网鼎杯WriteUp http://cn-sec.com/archives/1123238.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: