题解
already got
看header
QR Code Puzzle
看网络流量,检查一下所使用的图片,识别一下即可
flee button
找到使用的js代码,直接在控制台输出
login filtering
页面字符集与数据库相同–不存在宽字符注入
查询语句单引号保护、转义、去空格–无法注入
mysql_real_escape_string(trim($_POST[‘id’])),如果去空格和转义的操作换一下就可以注入了。
1 | if($id=='guest' || $id=='blueh4g') |
这句判断是区分大小写的,mysql查询是不区分大小写的。因此id=Guest&ps=guest
即可
参考题解
DB is really GOOD
通过测试登陆admin,发现不能登陆,可以想到是突破这个限制。
通过数据插入,发现存在注入问题,也发现数据库为SQLITE,php错误屏蔽未开启。
通过INSERT注入,发现数据库中只有一个表,内容只有当前用户的数据。用户名倒是可以XSS。
提示用户名和数据库有关联,猜想可能是根据用户名创建数据库,测试用户名tes/t
,爆出相关语句,以及准备使用的数据库名。
通过规律猜测,可以确定admin
数据库地址为http://wargame.kr:8080/db_is_really_good/db/wkrm_admin.db
。下载下来用navicat打开就能找到flag。
参考题解
WTF_CODE
提示说这是一种编程语言,查一下是whitespace,找了一个在线的解码地址。
参考题解
fly me to the moon
熟悉的JS逆向。
可以注意到页面的score
在更改,因此拦截dom的变化,可以定位到相关代码,然后追溯下去,找到一段函数
1 | function _0x8618x7() { |
由于整个代码是在chrome
的js虚拟机里的,所以不能直接更改代码。在return
这里下断点,把值改成31337
然后继续就可以了,直到游戏挂了,就可以拿到flag了。
看了下这篇是发现了数据包,然后改包的。其实拿到题目的时候,题目说了是js game
,那么flag
很可能是写死在js里的,不过也算是观察入微:)
md5 password
问题在于碰撞出一个raw MD5为可使其注入的字符串。
搜一下,有如下payload可供选用
1 | ffifdyop |
没想到是leet more 2010
的题,虽然并不知道这个比赛。
参考
- https://blog.csdn.net/greyfreedom/article/details/45846137
- http://mslc.ctf.su/wp/leet-more-2010-oh-those-admins-writeup/
- http://cvk.posthaven.com/sql-injection-with-raw-md5-hashes
参考题解(只是稍微瞄了一眼)
type confusion
依然是php弱类型。
tmitter
给的提示是这样
1 | create table tmitter_user( |
一看就知道是截断。
web chatting
监控流量可以发现请求http://wargame.kr:8080/web_chatting/chatview.php?t=1&ni=31337
,ni
为注入点。
理论上这题可以用SQLiGods做的,但是不知道为什么没有把flag爆出来,手动倒是可以。
lonely guys
还是注入,用sqlmap了。
是盲注,payload类似如下
1 | desc,(SELECT (CASE WHEN (ORD(MID((SELECT IFNULL(CAST(authkey AS CHAR),0x20) FROM lonely_guys.authkey ORDER BY authkey LIMIT 0,1),39,1))>50) THEN 1 ELSE 4772*(SELECT 4772 FROM INFORMATION_SCHEMA.PLUGINS) END)) |