Web解进阶题目思路(7~12)

七、NewsCenter(难度:2)(注入)

在这里插入图片描述
在界面中是一些无关的信息,在search栏里面输入查找的新闻内容,若数据库中存有则会显示,否则显示空。
看到输入框,大致能直接联想到应该使用sql注入。
测试一下是否存在sql注入:尝试随便输入h'发现页面报错,而输入 h' -- '则显示:
在这里插入图片描述
说明存在sql注入。
方法一:sql手动注入
(关于sql手动注入、联合查询的基础知识点以及查询information_schema的原因查看sql手动注入知识点一sql手动注入知识点二
不断尝试在information_schema数据表中内容的列数,发现在3列(即语句为:xx' union select 1,2,3 from information_schema.tables;,其中xx可为任意内容,而'不可更改)的时候没有报错并且在界面展示了2,3列的内容:
在这里插入图片描述
则插入sql语句让其在第2或者第3位置(此处选择在第三列)显示数据库中所有的表名:
在这里插入图片描述
在最后发现2个表名不像是系统自带,初步推测news表即为我们可以查询的内容(后来事实证明确实如此),则我们需要的密钥应该在secret_table表中:
在这里插入图片描述
插入语句显示secret_table表中的所有列信息:xx' union select 1,2,column_name from information_schema.columns where table_name = 'secret_table';
在这里插入图片描述
发现其中一列fl4g即为目标,输入xx' union select 1,2,fl4g from secret_table;即可获取里面的内容:
在这里插入图片描述
方法二:使用sqlmap

输入代码查看所有数据库名:

sqlmap -u http://220.249.52.133:49733 --data="search=1" -dbs

已知information_schema是必定自带的数据库名,猜测可能是数据库名被加密过,排除对应头尾知道还有个数据库名应为news
在这里插入图片描述
列出数据库中的所有表:

sqlmap -u http://220.249.52.133:49733 --data="search=1" -D news --tables

对应依旧推测出表名为secret_table
在这里插入图片描述
使用:

sqlmap -u http://220.249.52.133:49733 --data="search=1" -D news -T secret_table--columns

查询出列名后发现有个fl4g,再使用:

sqlmap -u http://220.249.52.133:49733 --data="search=1" -D news -T secret_table -C fl4g

在这里插入图片描述

八、NaNNaNNaNNaN-Batman(难度:2)(javascript)

下载好文件解压,使用vim打开发现一串script代码,发现最后有一个eval()函数,则大概率是前面代码中的一些字符被eval计算了,所以呈现乱码,将其改为alert()弹窗:
在这里插入图片描述
保存后再浏览器中打开,发现乱码部分得到修正,将得到的代码复制到编辑器中整理顺序:
在这里插入图片描述
理解代码部分意思:
在这里插入图片描述
方法一 由代码中的正则表达式匹配原则知e的值要满足16位,且开头结尾固定为:
在这里插入图片描述
最后满足中间要求,代码串最终应为be0f233ac7be98aa。网页中输入得到:
在这里插入图片描述
方法二 由8-15行代码也可直接写出:答案为flag{it's_a_h0le_in_0ne}

九、PHP2(难度:2)(.phps文件和代码审计)

目录扫描知存在.phps文件
在这里插入图片描述
即可查看该.php文件的源码:
在这里插入图片描述
由代码知,应通过get方式传递一个id值,且该id进行了一次解码后值应为admin,由于知id在网页上传递会默认解码一次,则应该对admin进行两次url加密,最终传到后端的id应为:%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
最后url传值知flag:在这里插入图片描述

十、unserialize3(难度:2)(序列化和反序列化)

在这里插入图片描述
代码审计,发现__ wakeup()是反序列化unserialize()中的一个方法,在反序列化中会执行,而在php反序列化时的一个漏洞是,当序列化的一个对象不符合标准,则会反序列化异常,自动跳过 __wakeup的执行。二最后提示应该给code赋值,则:

在这里插入图片描述
此时 code=O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;} 是正常时候的序列化字符串,改变其中一个地方使其与函数内容不匹配则可略过wakeup函数:
在这里插入图片描述

十一、upload1(难度:2)(注入)

先随便上传一个文件,发现可以对文件后缀绕过处理
在这里插入图片描述
则一句话木马注入,将一句话木马写入文件a.jpg中,通过burp suite代理拦截后,将.jpg后缀改为.php后缀,之后forword:
在这里插入图片描述
注入成功后通过返回的上传地址以及一句话木马的密码,使用AntSword连接:
在这里插入图片描述
连接成功之后发现其flag文件,打开查看即可:
在这里插入图片描述

十二、supersqli(难度:2)(sql注入–修改表名列名)

在传值时加入 ' 发现存在sql注入:
在这里插入图片描述
之后联合注入时发现select|update|delete|drop|insert|where均被屏蔽了:
在这里插入图片描述
则换一种思路,尝试堆叠注入,查询所有数据库:
在这里插入图片描述
查询所有表:
在这里插入图片描述
依次查询这两个表的所有内容(注意:表名为数字时查询时要加反引号):
在这里插入图片描述
在这里插入图片描述
则知道实际默认查找的表应该是对应words表,inject=1对应于id=1。
而我们需要的东西应该在表1919810931114514中,再仔细看之前被屏蔽的词语中并没有 rename和alert,因此思路可以是将1919810931114514这个表名字改为words,然后将列名flag改为id:
在这里插入图片描述
此时由于我们对id进行了修改,其值为flag,因此我们传入的inject=1是无法显示正确的flag的,因此这个时候就要使用1' or 1=1 --'来查询flag的值:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值