##基础题
安全宝情人节一个活动,算是ctf相关吧。
Q1Q2略过
Q3:在源码的js中找到flag:wo ai anquanbao
Q4:值得一提
打开调试,有一个请求:http://yuebaomei.com/show.php?p=dGlzaGkucG5n
参数p的值猜测由base64加密
dGlzaGkucG5n => tishi.png
yuehui.png => eXVlaHVpLnBuZw==
访问http://yuebaomei.com/show.php?p=eXVlaHVpLnBuZw==
即可
##附加题
###A. Android通关
说起来真的是一波三折
首先这是一个搭积木的游戏,一共有100关,通过最后一关即可得到key
当时下载下来用apktool反编译失败,隐约觉得是版本低了,于是找新的版本,然后就没有然后了。
过了些时间用新版本重新反编译,然后在JoyStacker/assets/level/中xml文件全部用第一关的xml覆盖,这样所有关卡就变为同一个最简单的关卡了。1
2
3
4
5
6#! /bin/bash
content=`cat 1.xml`
for file in `ls *.xml`
do
echo $content > $file
done
然后重新打包,签名,安装,接下来就可以手动刷过了
为什么这么麻烦呢?
因为笔者使用 Linux(openSuSE 13.1) 虚拟机安装不成功,手机又不想 root,也看不到应用的文件夹(~_~)
参考 writeup 知道每一关的数据保存在 /data/data/com.rayx.stacker/shared_prefs/s.xml 中
用过第一关,然后用第一关的数据伪造其他关的内容即可。
但是。。。手机没 root 啊,adb push 没有权限,于是我就想办法,一查可以这样:run-as com.rayx.stacker
提示 run-as: Package 'com.rayx.stacker' is unknown
再一查,这是一个bug NDK debugging does not start: “package is unknown”, 无果。
###B. SQL注入
不会。。。。
###C. PHP代码审计
1 | <?php |
要求参数password的值
- 必须满足12位以上字符
- 必须是非空格非TAB之外的内容
- 然后是password要有大小写数字,字符,而且匹配到的次数要不小于6次
- 最后的考点是:
if ("42" == $password) echo $flag;
这里考察PHP的弱类型匹配,可以想办法构造如下:
- 42.00e+00000000000
- +42.0000000000e0
- 420.000000000e-1
参考链接:
安全宝「约宝妹」android通关CTF题解
约宝妹Android题破解思路
在非root android手机上访问/data/data/com.*目录
NDK debugging does not start: “package is unknown”