Web签到题,来和我换flag啊!
POST提交三个f1ag,可在response中拿到flag。
WelcomeToMySQL
F12发现数据库信息在../base.php
。上传php5
|
|
访问upload/xxx.php可拿到base.php源码。
再上传一个php5连接数据库可拿到flag。
|
|
where is your flag
访问flag.php发现hint:thisisflag。可知在表flag中有字段名为thisisflag。尝试GET请求id=1
,页面返回正常;请求id=2-1
,返回空白页面,可猜测,sql语句为
|
|
测试可知为宽字节注入,且需要转换编码为gbk:
我们一起来日站
尝试访问robots.txt
,发现Disallow: /21232f297a57a5a743894a0e4a801fc3/
,提示keep finding admin page,访问/admin.php
进入后台登录界面。简单注入:username为admin
,passwd为'or 1#
拿到flag。
自相矛盾
F12拿到部分源码
|
|
其中$v2中的array_search()绕过参考了某个大佬的博客:array_search()绕过。$v3中正则的绕过采用%00截断。
Simple sqli
验证码要求md5加密后前三位等于一个随机字符串,于是可以写个脚本爆破出符合要求的验证码:
|
|
测试发现,当Username为admin
和' or 1#
时显示password error. 输入不存在的Username或者sql语法错误时显示username error. 输入'union select 1
亦显示password error. 可以猜测sql语句为:
|
|
然后将查询结果与用户输入的md5加密后的password进行比较。
于是可以令Username=' union select md5(1)#
,Password=1
,即可拿到Flag。
I have a jpg,i upload a txt.
题目过滤了php标签和script标签。当传入$do=rename时,调用了一个KaIsA()函数,测试后发现大写字母为ascii+6,小写为ascii-6,函数代码如下:
|
|
观察源码发现,rename过程中新生成的随机文件名的txt是唯一的,因此可以尝试上传两个使用php短标签的文件,拼成一个txt文件,再更改后缀为php。
上传的两个文件分别为:
|
|
经过两次的rename过程,可以得到一个随机文件名的php,访问upload/xxxxxx.php会跳转到flaggalf.php,抓包可得flag