(渗透学习)代码审计 -- 1 (SQL注入漏洞)

语言:PHP

工具:Seay代码审计系统

挖掘技巧:

特定函数:select、insert、update、delete、sql执行语句

可控变量:带$的变量  (如select * from XXX where id = $id limit 0,1)

思路:

先导入源码,全局搜索select,选择不区分大小写

其中有两处是存在可控变量$ID,这里选择第一处

发现其中是一个函数,$ID是函数ywX()调用时传入的变量,并且传入之后直接拼接到sql语句中无任何过滤就被执行了

所以需要找出ywX()函数在哪被调用了,全局搜索ywX

选择第一次出现的位置并查看,发现函数ywX在/sqqyw/php/v144.php处被调用了,传入的$ID变量是通过页面接收过来的,访问http://localhost//sqqyw/php/v144.php?id=1随便传入一个id值查看效果

页面出错,提示 从哪里来,滚哪里去!

全局搜索查看源码找到打印提示的地方

分析源码,当数组$sohuquan中不存在$domain时打印输出提示语句

$domain:来自请求头referer字段,并去掉http://

$sohuquan:来自请求头host字段

所以抓包添加referer字段,并将host字段值给referer可绕过

因为Referer被接收之后会去掉http://,所以http://可加也可不加

又提示说 请输入完整

跟上一步一样,全局搜索找出在哪里打印的

可以看到,其中api=ok,并且u、p、id三个参数只要存在一个为空即打印改提示,

构造payload绕过

成功绕过,提示购买失败

利用burpsuite抓包利用重发器演示

构造sql注入payload:

http://localhost/sqqyw/php/v144.php?api=ok&u=1&p=1&id=1'  

不报错,依然输出购买失败

到这已经很明显了,其中id由v144.php页面传入,并且毫无过滤就被带入到sql语句中执行了,而页面提示都是购买失败

这是一个典型的sql盲注

可以直接利用注入神器sqlmap并指定参数id进行注入

爆当前库名:sqqyw

python sqlmap.py -u "http://localhost/sqqyw/php/v144.php?api=ok&u=1&p=1&id=1" --batch -p "id" --current-db

也可以采用时间盲注,用burpsuite进行爆破

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值