понедельник, 13 мая 2013 г.

When Integer cannot protect you from SQL injection?

It is assumed that the cast user data to a numeric type is fully protected from SQL injection vulnerabilities.

Look at simple example:

$action = $_GET['do'];
$r=$db->query("select role".((int)$action)." from users where id=".((int)$_SESSION['user_id']));
if($row=$r->fetchArray()){
        if((int)$row[0]!==1){
                die('permission denied');
        }else{
                doAction($action);
        }
}


This code looks like SQLi protected, but it is not true.

Do not forget two obvious facts:
1. Minus is SQL operatator
2. Numbers can be negative

Now its easy to understand SQL logic in this case (w/o injection):

select role0 from users where id=0

And SQL injection attack vector in this case:

select role-1 from users where id=0


In our example attacker can bypass auth.
This example requires tables role and role0 both in database.

49 комментариев:

  1. Should the last sentence say "columns role and role0 both in the table users"?

    ОтветитьУдалить
  2. > describe us;
    +-------+------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+------+------+-----+---------+-------+
    | role0 | text | YES | | NULL | |
    | role1 | text | YES | | NULL | |
    | role | text | YES | | NULL | |
    +-------+------+------+-----+---------+-------+
    3 rows in set (0.04 sec)

    > select role-1 from us;
    +--------+
    | role-1 |
    +--------+
    | -1 |
    +--------+
    1 row in set (0.00 sec)


    array list
    0 => key
    0 => value (-1)

    $me=mysql_query("SELECT role-1 FROM us");
    $f=mysql_fetch_array($me);

    echo $f[0]; //output -1

    var_dump(-1!==1); //true

    dude failed


    in the second case



    snip___
    MariaDB [data]> select role+1 from us;
    +--------+
    | role+1 |
    +--------+
    | 1 |
    +--------+

    ОтветитьУдалить
    Ответы
    1. Этот комментарий был удален автором.

      Удалить
    2. Этот комментарий был удален автором.

      Удалить
  3. For Numeric type of columns role, role0...roleN of course :)

    ОтветитьУдалить
  4. The article fail vector
    But I wrote about it, see 8)

    ОтветитьУдалить
  5. What if just manually change the stupid value? I mean inline URL editing. In that case this isn't new. Not easy to exploit

    I think author want to show that u can't use critical values from frontend. I wouldn't use roles at least.

    ОтветитьУдалить
  6. Can't understand your post. This vector works well.

    And text columns obviously not about this.

    Just about minus as a SQL operator. Types of database columns which can be operated through minus depends from DB type. Test SQLite, for example.

    ОтветитьУдалить
  7. Этот комментарий был удален автором.

    ОтветитьУдалить
  8. Your text can be considered a case of

    MariaDB [data]> select role from us;
    +------+
    | role |
    +------+
    | 2 | => me row output 2
    +------+
    1 row in set (0.00 sec)


    ===============================


    auth bypassvector

    MariaDB [data]> select role-1 from us;
    +--------+
    | role-1 |
    +--------+
    | 1 |
    +--------+
    1 row in set (0.00 sec)


    output row => 1
    and bypass :)

    ОтветитьУдалить
  9. Этот комментарий был удален автором.

    ОтветитьУдалить
  10. I have created another example from this issue in #0x3004CTF. Check it:
    http://pastebin.com/JpKVpC2m :)

    ОтветитьУдалить
  11. While enormous changes and difficulties are currently confronting the web based loaning industry in the UK, it truly pays to have a prepared installments supplier that can direct you through the procedure and exhort the prescribed procedures with the goal that you are not running astray of the administrative structure.
    Payday Loans

    ОтветитьУдалить
  12. It took a while yet I figured out how to do it. The primary spot I had went however, continued running the check through the credit union I was an individual from.
    Cash Advance

    ОтветитьУдалить
  13. A few understandings will take into account intrigue just regularly scheduled installments, yet it is insightful to make installments towards the important consistently to stay away from a huge inflatable installment toward the finish of the term or face the likelihood of losing your auto title. Credits like this can maneuver you into an obligation trap.
    Auto Title Loans

    ОтветитьУдалить
  14. Otherwise called a transient advance, loan, quick money, money advance, awful credit advance or conceded store, a payday advance is an unsecured advance, as a rule for a little sum that is planned to be an impermanent answer for meet your budgetary needs until your next payday.
    Check Cashing Chula-vista

    ОтветитьУдалить
  15. When you are coordinated with a bank, you might be a required to electronically sign and consent to the terms of the credit.
    Check Cashing Corona

    ОтветитьУдалить
  16. دانلود سریال موچین
    https://www.aparat.com/v/4X2te/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF_%D8%B3%D8%B1%DB%8C%D8%A7%D9%84_%D9%85%D9%88%DA%86%DB%8C%D9%86_%D8%A2%D9%BE%D8%A7%D8%B1%D8%A7%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D9%82%D8%B3%D9%85%D8%AA%D9%87%D8%A7_%7C_%D9%82%D8%B3%D9%85%D8%AA_%D8%A7%D9%88%D9%84_%D8%AA%D8%A7

    ОтветитьУдалить
  17. دانلود سریال موچین
    https://www.dalfak.com/w/k1rov1/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%B3%D8%B1%DB%8C%D8%A7%D9%84-%D9%85%D9%88%DA%86%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-1-%D8%B3%D8%B1%DB%8C%D8%A7%D9%84-%D9%85%D9%88%DA%86%DB%8C%D9%86-%DA%A9%D9%84-%D9%82%D8%B3%D9%85%D8%AA%D9%87%D8%A7

    ОтветитьУдалить
  18. دانلود سریال موچین
    https://mihanvideo.com/v/dNusz/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF_%D8%B3%D8%B1%DB%8C%D8%A7%D9%84_%D9%85%D9%88%DA%86%DB%8C%D9%86_%D9%82%D8%B3%D9%85%D8%AA_1_%D8%AA%D8%A7_13_%D9%87%D9%85%D9%87_%D9%82%D8%B3%D9%85%D8%AA%D9%87%D8%A7

    ОтветитьУдалить
  19. دانلود سریال موچین
    https://mihanvideo.com/v/dNusz/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF_%D8%B3%D8%B1%DB%8C%D8%A7%D9%84_%D9%85%D9%88%DA%86%DB%8C%D9%86_%D9%82%D8%B3%D9%85%D8%AA_1_%D8%AA%D8%A7_13_%D9%87%D9%85%D9%87_%D9%82%D8%B3%D9%85%D8%AA%D9%87%D8%A7

    ОтветитьУдалить
  20. https://www.cratoswin.com/

    Canlı bahis sitesi

    Vip casino sitesi Cratosslot

    Egt slot oyunları

    Online canlı bahis sitesi Cratossporting

    Online casino Cratosslot

    En iyi oyunlar 

    Tüm radyo frekansları için

    ОтветитьУдалить
  21. Well explained dear authors, Good thanks for considering this topic, Can you also explain about some SQL injection examples like Union attacks, examining the database, blind SQL injection etc.
    sports betting app development
    Luxury resort in Mandarmoni

    ОтветитьУдалить
  22. QuickBooks Connection Diagnostic Tool is your one stop solution for resolving errors that occurs in network connectivity, other than that it also helps in resolving errors like 6000 series errors, H series errors in QUickbooks.

    ОтветитьУдалить
  23. Someone necessarily help to make severely articles I might state. That is the first time I frequented your web page and up to now? I surprised with the analysis you made to create this actual publish extraordinary. Fantastic process 안전놀이터

    ОтветитьУдалить
  24. Dude, I am so glad that I came across this awesome article you shared on "When Integer cannot protect you from SQL injection" - you discussed the topic pretty well and I'm sure that every reader will learn a lot of things about this SQL injection attack. Anyway, are you a gamer by any chance? I want you to invite on playing this bubble witch saga 3 game - this is a casual game with an awesome gameplay and graphics that you will surely enjoy. Read more details at https://games.lol/words-with-friends-2/

    ОтветитьУдалить
  25. Thanks for your marvelous posting! I actually enjoyed reading it, you could be
    a great author.I will remember to bookmark your blog and will
    eventually come back from now on. I want to encourage you to continue your great
    writing, have a nice weekend!

    Website:카지노



    ОтветитьУдалить
  26. I like what you guys are usually up too. This kind of clever work and coverage! Keep up the very good works guys I’ve incorporated you guys to blogroll.
    바카라

    ОтветитьУдалить
  27. I am little confused with blind SQL injection and its relation with integers. Hereby, I kindly request you to explain more about them. But definitely your description and ideas are very suggestive and beneficial. Thanks a lot. Best 6 burner gas grills

    ОтветитьУдалить
  28. I was very pleased to find this web-site. I wanted to thanks for your time for this wonderful read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you blog post.

    Supermotors.net
    Information
    Click Here
    Visit Web

    ОтветитьУдалить
  29. I am often to blogging and i really appreciate your content. The article has really peaks my interest. I am going to bookmark your site and keep checking for new information.

    Viki.com
    Information
    Click Here
    Visit Web

    ОтветитьУдалить
  30. Easily, the article is actually the best topic on this registry related issue. I fit in with your conclusions and will eagerly look forward to your next updates
    야설

    ОтветитьУдалить
  31. Great blog here! Additionally your website quite a bit up very fast! What web host are you the use of? Can I am getting your affiliate hyperlink on your host?
    일본야동


    ОтветитьУдалить
  32. You should take part in a contest for one of the best blogs on the web. I will recommend this site!

    Click Here
    Visit Web
    Scca.com
    Information
    Click Here

    ОтветитьУдалить
  33. I inquisitive more enthusiasm for some of them trust you will give more data on this subjects in your next articles.
    섯다

    ОтветитьУдалить
  34. This is a great post I seen because of offer it. It is truly what I needed to see seek in future you will proceed after sharing such a magnificent post.
    스포츠토토

    ОтветитьУдалить
  35. First of all, thank you for letting me see this information. I think this article can give me a lot of inspiration. I would appreciate 바카라사이트 if you could post more good contents in the future.

    ОтветитьУдалить
  36. Your blogs are great.Are you also searching for shadow health writing services ? we are the best solution for you. We are best known for delivering shadow health assignments.

    ОтветитьУдалить
  37. การเล่นบาคาร่าออนไลน์ จะง่ายขึ้นกว่าเดิม เมื่อนำ สูตร sagame ไปปรับใช้ เพื่อเป็นการศึกษาแนวทางการเลือกฝั่งวางเดิมพัน และเพื่อเป็นเทคนิคการเล่นบาคาร่าให้มีโอกาสชนะมาสูงสุดถึง 100% สามารถรับสูตรบาคาร่าฟรีได้ที่ sagame herelao com นอกจากนี้เว็บไซต์ของเรายังมาพร้อมกับโปรโมชั่น สุด HOT สุด HIT อีกมากมาย พร้อมลุ้นรับโบนัสและเครดิตฟรีได้ทุกวัน และทุกนาทีที่เริ่มเดิมพัน และที่สำคัญระบบฝากถอนมีความปลอดภัย ฝากถอนผ่าน True Money Wallet ฟรี ใน 1 นาที !!

    ОтветитьУдалить
  38. Adverse consequences of going bald on your wellbeing
    Going bald can be an indication of another serious medical condition. On the off chance that it's joined by different side effects, for example, redness, absence of energy or muscle hurts, your balding might be more serious from maturing or genetic causes. While hair diminishing and muscle torments happen continually, you might have hypothyroidism, a kind of hormonal immune system chemical lopsidedness. There is a sort of mental problem known as motivation control jumble and is most usually found in young people. Because of this distress, you more than once take out your own hair, which can cause observable balding.
    Fundamental data about hair transplantation
    On the off chance that you smoke, you ought to quit smoking somewhere around fourteen days before the medical procedure. Smoking harms sound roots and causes recuperating issues. Your scalp might be exceptionally touchy after medical procedure and this is ordinary. You can get back to work 2 to 5 days after the activity. The relocated hair will drop out inside 2 to 3 weeks after the medical procedure, yet you ought to begin to see new development inside a couple of months. 
    Hair Transplantation Methods - FUT and FUE strategy
    There are two sorts of hair transplantation methods: FUT (Follicular Unit Transplant) and FUE (Follicular Unit Extraction). The FUT strategy is essentially founded on taking a piece of skin with hair follicles from the rear of your head, where the hair follicles are normally more full and less inclined to balding. Little tissue bunches containing hair follicles are eliminated from this part and ready for transplantation. Simultaneously, little openings are made in the beneficiary region where you experience going bald. 
    Our specialist applies the FUE (Follicular unit extraction) strategy and CHOI pens for turkey hair transplant clinic. He and his group generally make the best number of unions (4500-5500 unions) in 1 meeting. Fue can be established in huge regions. Because of the Fue strategy, homogenization has turned into the new norm in hair appearance. Follicular unit joins, comprising of few hair follicles, are independently eliminated from hereditarily more grounded region of the scalp and reestablished to diminishing regions. The region will recuperate in a couple of days as there are no straight scars and join. 

    ОтветитьУдалить