GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — codeql-lab/codeql-dataflow-sql-injection-c/add-user.c at qllab · hohn/codeql-lab Expand file tree/ Copy pathadd-user.cMore file actions 100 lines (88 loc) · 2.21 KB / Copy pathadd-user.cFile metadata and controls100 lines (88 loc) · 2.21 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <ctype.h> #include <sqlite3.h> #include <time.h> void write_log(const char* fmt, ...) { time_t t; char tstr[26]; va_list args; va_start(args, fmt); t = time(NULL); ctime_r(&t, tstr); tstr[24] = 0; /* no \n */ fprintf(stderr, "[%s] ", tstr); vfprintf(stderr, fmt, args); va_end(args); fflush(stderr); } void abort_on_error(int rc, sqlite3 *db) { if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); fflush(stderr); abort(); } } void abort_on_exec_error(int rc, sqlite3 *db, char* zErrMsg) { if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); sqlite3_close(db); fflush(stderr); abort(); } } char* get_user_info() { #define BUFSIZE 1024 char* buf = (char*) malloc(BUFSIZE * sizeof(char)); if(buf==NULL) abort(); int count; // Disable buffering to avoid need for fflush // after printf(). setbuf( stdout, NULL ); printf("*** Welcome to sql injection ***\n"); printf("Please enter name: "); count = read(STDIN_FILENO, buf, BUFSIZE - 1); if (count <= 0) abort(); // ensure the buffer is zero-terminated buf[count] = '\0'; /* strip trailing whitespace */ while (count && isspace(buf[count-1])) { buf[count-1] = 0; --count; } return buf; } int get_new_id() { int id = getpid(); return id; } void write_info(int id, char* info) { sqlite3 *db; int rc; int bufsize = 1024; char *zErrMsg = 0; char query[bufsize]; /* open db */ rc = sqlite3_open("users.sqlite", &db); abort_on_error(rc, db); /* Format query */ snprintf(query, bufsize, "INSERT INTO users VALUES (%d, '%s')", id, info); write_log("query: %s\n", query); /* Write info */ rc = sqlite3_exec(db, query, NULL, 0, &zErrMsg); abort_on_exec_error(rc, db, zErrMsg); sqlite3_close(db); } int main(int argc, char* argv[]) { char* info; int id; info = get_user_info(); id = get_new_id(); write_info(id, info); free(info); /* * show_info(id); */ } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |